Viisi parasta muutosta VB 6: sta VB.NET: ksi

click fraud protection

01

08

Viisi parasta vaihtoa VB 6: n ja VB.NET: n välillä

Viisi parasta muutosta

Visual Basic 1.0 oli suuri maanjäristys koko ohjelmoinnin ajan. Ennen VB1: tä jouduit käyttämään C: tä, C ++: ta tai jotain muuta kauheaa kehitysympäristöä Windows-sovellusten luomiseen. Ohjelmoijat viettivät kirjaimellisesti viikkoja vain piirtämällä ikkunoita näytöille nirsoilla, yksityiskohtaisilla, vaikeaan virhekoodilla. (Sama asia, jonka voit tehdä vetämällä lomakkeen työkaluriviltä muutamassa sekunnissa.) VB1 oli osuma ja gazillionit ohjelmoijat alkoivat heti käyttää sitä.

Mutta jotta taikuus tapahtuisi, Microsoft teki joitain merkittäviä arkkitehtuurikompromisseja. Erityisesti koska VB1 loi lomakkeet ja ohjaimet, ne eivät antaneet ohjelmoijalle pääsyä koodiin, joka teki sen. Annoit VB: n luoda kaiken tai käytit C ++: ta.

VB 2 - 6 ylläpitää samaa arkkitehtuuria. Microsoft teki joitain erittäin taitavia päivityksiä, jotka antoivat ohjelmoijille paljon enemmän hallintaa, mutta viime kädessä ohjelmoijat eivät silti voineet integroida koodiaan VB-koodiin. Se oli musta laatikko - eikä myöskään hyvällä OOP-tavalla. Toinen tapa sanoa tämä oli, että ohjelmoijalla ei ollut pääsyä sisäisiin VB "objekteihin", ja toinen tapa sanoa, että VB6 ei silti ollut täysin "oliopohjainen".

instagram viewer

02

08

VB 6 - putoaminen teknologiakäyrän taakse

Sillä välin Java, Python ja paljon muita ohjelmointikieliä, jotka olivat WERE-olosuhteisiin orientoituneita, alkoivat ilmestyä. Visual Basic oli menossa ohi - iso aika! Tässä tilanteessa Microsoft ei suvaitse... ja he päättivät ratkaista ongelman lopullisesti. Ratkaisu on .NET.

Mutta tehdäkseen asiat, jotka .NET piti tehdä, Microsoft päätti, että heidän oli "rikottava yhteensopivuus". Toisin sanoen Visual Basic -ohjelmat olivat olleet (erittäin pienillä poikkeuksilla) "yhteensopivia" ylöspäin VB1: stä VB6: een. Tässä VB: n ensimmäisessä versiossa kirjoitettu ohjelma kokoaa ja suorittaa edelleen seuraavassa versiossa. Mutta VB.NET: n kanssa Microsoft havaitsi, että he eivät vain pystyneet saamaan kieltä täysin OOP: ksi ja ylläpitämään ylöspäin yhteensopivuutta.

Kun he olivat tehneet tämän perustavanlaatuisen päätöksen, tulvaportit avautuivat kymmenen vuoden ajan kertyneeseen "toivelistalle" ja muut kaikki siirtyivät uuteen VB.NET-verkkoon. Kuten Britanniassa sanotaan: "Penniltä, ​​puntaan".

Ilman lisäviivettä tässä on erittäin henkilökohtainen luetteloni viidestä parhaasta muutoksesta VB6: sta VB.NET: ään käänteisessä järjestyksessä.

Wellllll... vain yksi lisäviive. Koska olemme vaihtamassa VB6: sta, jossa taulukko ilmoitetaan nimellä Dim myArray (5) on 6 elementtejä, meitä on kuusi heistä. Se sopii vain ...

(Rummutela kiitos ...)

03

08

Palkinto (5) - C-kaltaiset syntaksimuutokset

"Palkinto (5)", meidän 6. sija palkinto saa C-ryhmän valinnan: C-tyyppinen syntaksi muuttuu!

Nyt voit koodata + = 1 a = a + 1: n sijasta, säästäen KOLMAT KOKONAISET KEYSTROKEET!

Maailman ohjelmoijat, iloitse! VB on nostettu C-tasoon, ja kokonainen uusi sukupolvi, joka yrittää oppia VB: tä, pääsee hiukan lähemmäksi massahämmennystä, joka kohtaa C ++ -opiskelijoita.

Mutta odota! Siellä on enemmän!

VB.NET sisältää nyt "oikosululogiikan", joka on tuonut hienoja virheitä C ++ -koodiin vuosien ajan säästääksesi arvokasta nanosekuntia prosessorin ajasta. Oikosululogiikka arvioi vain useita ehtoja loogisessa lausunnossa tarvittaessa. Esimerkiksi:

Dim R Kuten Boolean
R = toiminto1 () ja toiminto2 ()

VB6: ssa molemmat toiminnot arvioidaan, tarvitsevatko he sitä vai eivät. Jos VB.NET: ssä, jos Function1 () on väärä, Function2 () jätetään huomioimatta, koska "R" ei voi olla totta. Entä jos globaalia muuttujaa muutetaan Function2 () - vain sattumalta (C ++ -ohjelmoijat sanoisivat " huono ohjelmointi ".) Miksi koodini tuottaa väärän vastauksen jonkin aikaa, kun se käännetään VB.NET? Tämä saattaa olla se!

varten Yrittääentistä vaikeammaksi, VB.NET tulee Ottaa kiinni vähän onnea ja vihdoin saada tunnustusta "poikkeuksellisesta" virheiden käsittelystä.

VB6: lla oli viimeinen holdout GoTo: "On Error GoTo". Jopa minun on myönnettävä, että C ++ -tyylinen "Kokeile-lopulta" -strukturoitu poikkeusten käsittely on valtava parannus, ei vain puoli valtavaa parannusta.

Mitä sanot "On Error GoTo" on edelleen VB.NET: ssä? Wellll... Yritämme olla puhumatta siitä liikaa.

04

08

5. paikka - sekalaiset komennot muuttuvat

5. sija valinta on ryhmäpalkinto: Sekalaiset komennot muuttuvat! Heidän on jaettava tämä palkinto, ja heitä on gazillion. Microsoft on säästänyt kymmenen vuotta ja he todella leikkaavat.

VB.NET ei enää tue VarPtr-, ObjPtr- ja StrPtr-toimintoja, jotka hakivat muuttujien muistiosoitteet. Ja se ei tue VB6 LSet -sovellusta, jota käytettiin muuntamaan käyttäjän määrittämä tyyppi toiseksi. (Ei pidä sekoittaa VB6 LSet -laitteeseen, joka tekee jotain täysin erilaista - katso alla.)

Tarjoamme myös ihastuttavaa ilmoitusta kohteisiin Let, puuttuu, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar ja (henkilökohtainen suosikki!) GoSub.

Circle on morphed osaksi GDI + DrawEllipse. Sama koskee Line to DrawLine -sovellusta. Laskelmassa meillä on nyt Atan Atnin sijasta, Sign menee sisään Sgnille, ja Sqrt sopii isoksi peliksi Sqr: n sijasta.

Merkkijonojen käsittelyssä, vaikka ne ovat edelleen käytettävissä, jos viitat Microsoftin yhteensopivuuteen nimitilassa, meillä on PadRight VB6: n LSet: lle (jälleen täysin erilainen kuin VB6: n LSet, tietysti) ja PadLeft RSet: lle. (Mukana on kolme näppäinpainetta, jotka tallensimme "+ ="!)

Ja tietysti, koska olemme nyt OOP, älä murehdi, jos Property Set, Property Let ja Property Get eivät täyty VB.NET: ssä, lyöt vetoa!

Viimeinkin Debug. Tulosta tulee joko vianetsinnäksi. Kirjoita tai poista virhe. WriteLine. Vain nörtit tulostavat kaiken joka tapauksessa.

Tämä ei koske edes kaikkia VB.NET: n UUSIA komentoja, mutta meidän on lopetettava tämä hölynpöly jossain.

05

08

4. sija - muutokset menettelytapahtumiin

Sisään 4. sija, meillä on Muutokset menettelytapahtumiin!

Tämä on "hyvyys, puhtaus ja terveellinen hyve" -palkinto ja edustaa paljon kovaa kampanjaa "ei enää huolimaton koodi" -ryhmän toimesta.

VB6: ssa, jos menettelyparametrimuuttuja on luontainen tyyppi, niin se on ByRef, ellet ole koodaa sitä ByVal nimenomaisesti, mutta jos sitä ei ole koodattu ByRef tai ByVal eikä se ole luontainen muuttuja, niin se on ByVal... Saitko sen?

VB.NET: ssä se on ByVal, ellei sitä ole koodattu ByRef.

ByVal VB.NET-oletus, muuten, estää myös menettelyjen parametrimuuttujien muutokset siirtymästä tahattomasti takaisin kutsukoodiin - avain osa hyvää OOP-ohjelmointia.

Microsoft myös "ylikuormittaa" VB.NET: ää muutoksella prosessipuhelujen suluihin liittyvissä vaatimuksissa.

VB6: ssa sulkuja vaaditaan argumenttien ympärillä toimintopuhelujen yhteydessä, mutta ei silloin, kun soitetaan aliohjelmaan, kun et käytä Call-käskyä, mutta niitä tarvitaan, kun Call-käskyä käytetään.

VB.NET: ssä sulkuja vaaditaan aina ei-tyhjän argumenttiluettelon ympärillä.

06

08

3. paikka - taulukot perustuvat 0: seen 1: n sijaan

Pronssipalkinto - 3. sija, menee Taulukot ovat 0 perustuvat yhden sijaan!

Se on vain yksi syntaksimuutos, mutta tämä muutos saa "mitalipodiumin" tilan, koska siitä äänestetään "todennäköisesti ruuvaamaan ohjelman logiikan". Muista, 3. sija ON "Award (2)" luettelossamme. Jos VB6-ohjelmassasi on laskurit ja taulukot (ja kuinka monta niitä ei ole), tämä MESS YOU UP.

Kymmenen vuoden ajan ihmiset ovat kysyneet: "Mitä Microsoft tupakoi, kun he tekivät sen tällä tavalla?" Ja kymmenen vuoden ajan ohjelmoijilla on tavallaan sivuutti sen tosiasian, että oli myArray (0) -elementti, joka vain vie tilaa ja ei tottu mitä tahansa... Lukuun ottamatta niitä ohjelmoijia, jotka käyttivät sitä, ja heidän ohjelmistonsa näyttivät olevan vain "outoja".

Jolle I = 1-5
MyArray (I - 1) = mitä tahansa
Seuraava

Tarkoitan, TODELLA! ...

07

08

2. sija - Varianttityyppi

Vuoden hopeamitali 2. sija menee kunnioittamaan vanhaa ystävää, joka pudotettiin ohjelmoinnin vähän kauhaan VB6: n ohi! Puhun mistä tahansa muusta kuin Varianttityyppi.

Todennäköisesti mikään muu Visual Basicin "notNet" -ominaisuus ei edusta paremmin "nopeaa, halpaa ja löysää" -filosofiaa. Tämä kuva koirasi VB: tä VB.NET: n käyttöönottoon asti. Olen tarpeeksi vanha muistaakseni Microsoftin Visual Basic 3.0: n esittelyn: "Voi vau! Lookee täällä! Uuden, parannetun Variant-tietotyypin kanssa sinun ei tarvitse ilmoittaa muuttujia tai mitään. Voit vain ajatella niitä ja koodata ne. "

Microsoft muutti niiden sävelmän melko nopeasti kyseisessä kappaleessa ja suositteli muuttujien ilmoittamista näppäimellä tietty tietotyyppi melkein heti, jolloin monet meistä ihmettelevät: "Jos et voi käyttää variantteja, miksi onko heillä? "

Mutta vaikka olemme tekemisissä datatyyppien kanssa, minun on mainittava, että monet datatyypit ovat muuttuneet sen lisäksi, että Variant pudottaa märkäsementtiin. Siellä on uusi Char-datatyyppi ja pitkä datatyyppi, joka on 64 bittiä. Desimaali on aivan erilainen. Lyhyt ja kokonaisluku eivät ole enää samanpituisia.

Ja siellä on uusi "Object" -tyyppi, joka voi olla mitä tahansa. Kuulin jonkun sanovan "Variantin poika"?

08

08

1. paikka - VB.NET on vihdoin täysin oliopohjainen

Vihdoinkin! Kultamitali, 1. sija, korkein palkinto, jonka voin antaa, menee ...

TA DAH!

VB.NET on vihdoin täysin olioorientoitunut!

Nyt kun menet rannalle, C ++ -ohjelmoijat eivät potkaise hiekkaa kasvosi ja varastavat (tyttöystävä / poikaystävä - valitse yksi). Ja sinä voit vielä koodaa täydellinen pääkirjakokeilutase, kun he yrittävät selvittää, mitkä otsikkotiedostot sisällytetään.

Ensimmäistä kertaa voit koodata niin lähellä sirua kuin tarvitset ja käyttää kaikkia järjestelmän sisäisiä osia, joita sydämesi haluaa ilman joudut turvautumaan niihin ilkeisiin Win32 API -puheluihin. Sinulla on perintö, toimintojen ylikuormitus, asynkroninen monisäikeinen langat, roskien keruu ja kaikki on esine. Voiko elämä paremmaksi?

Kuulinko jonkun sanovan, että C ++: lla on useita perintötekijöitä, ja .NET ei edelleenkään?

Polta harhaoppi!

instagram story viewer