Οι πέντε καλύτερες αλλαγές από το VB 6 στο VB.NET

01

του 08

Οι κορυφαίες πέντε αλλαγές μεταξύ VB 6 και VB.NET

Κορυφαίες πέντε αλλαγές

Το Visual Basic 1.0 ήταν ένας μεγάλος σεισμός κατά τη διάρκεια του προγραμματισμού. Πριν από την έκδοση VB1, έπρεπε να χρησιμοποιήσετε C, C ++ ή κάποιο άλλο φρικτό περιβάλλον ανάπτυξης για να δημιουργήσετε εφαρμογές για Windows. Οι προγραμματιστές κυριολεκτικά πέρασαν εβδομάδες απλά να σχεδιάζουν τα παράθυρα σε οθόνες με επιλεκτικό, λεπτομερή, δύσκολο να εντοπίσουν κώδικα. (Το ίδιο πράγμα μπορείτε να κάνετε με τη μεταφορά μιας φόρμας από τη γραμμή εργαλείων μέσα σε λίγα δευτερόλεπτα.) Το VB1 ήταν ένα hit και οι gazillions των προγραμματιστών άρχισαν αμέσως να το χρησιμοποιούν.

Αλλά για να γίνει η μαγεία, η Microsoft έκανε μερικούς σημαντικούς συμβιβασμούς αρχιτεκτονικής. Συγκεκριμένα, δεδομένου ότι η VB1 δημιούργησε τις φόρμες και τους ελέγχους, δεν επέτρεψε στον προγραμματιστή την πρόσβαση στον κώδικα που το έκανε. Μπορείτε είτε να αφήσετε τη VB να δημιουργήσει τα πάντα είτε να χρησιμοποιήσετε τη C ++.

Τα VB 2 έως 6 διατήρησαν την ίδια αρχιτεκτονική. Η Microsoft έκανε κάποιες πολύ έξυπνες ενημερώσεις, οι οποίες έδωσαν στους προγραμματιστές πολύ μεγαλύτερο έλεγχο, αλλά τελικά οι προγραμματιστές δεν μπορούσαν να ενσωματώσουν τον κώδικα τους με τον κώδικα VB. Ήταν ένα μαύρο κουτί - και όχι στον καλό δρόμο OOP. Ένας άλλος τρόπος να πούμε αυτό ήταν ότι ο προγραμματιστής δεν είχε πρόσβαση στα εσωτερικά αντικείμενα VB και ένας άλλος τρόπος να πει κανείς ότι ήταν ότι το VB6 δεν ήταν ακόμα πλήρως αντικειμενοστρεφές.

instagram viewer

02

του 08

VB 6 - Πτώση πίσω από την καμπύλη της τεχνολογίας

Εν τω μεταξύ, άρχισαν να εμφανίζονται η Java, η Python και πολλές άλλες γλώσσες προγραμματισμού που προσανατολίστηκαν αντικειμενικά. Η Visual Basic είχε περάσει - μεγάλη στιγμή! Αυτή είναι μια κατάσταση που η Microsoft δεν ανέχεται... και αποφάσισαν να λύσουν το πρόβλημα μία για πάντα. Η λύση είναι. NET.

Αλλά για να κάνει τα πράγματα που χρειάζεται το .NET, η Microsoft αποφάσισε ότι έπρεπε να "σπάσουν τη συμβατότητα". Δηλαδή, τα προγράμματα Visual Basic είχαν (με ελάχιστες εξαιρέσεις) "ανοδικά συμβατά" από το VB1 μέχρι το VB6. Ένα πρόγραμμα γραμμένο σε αυτή την πρώτη έκδοση του VB θα εξακολουθεί να καταρτίζεται και να τρέχει στην επόμενη έκδοση. Αλλά με το VB.NET, η Microsoft διαπίστωσε ότι δεν μπορούσαν απλώς να κάνουν τη γλώσσα πλήρως OOP και να διατηρήσουν προς τα πάνω συμβατά.

Μόλις έκαναν αυτή τη θεμελιώδη απόφαση, οι πύλες των πλημμυρών ανοίχτηκαν σε δέκα χρόνια συσσωρευμένων αλλαγών "wish list" και όλοι τους μπήκαν στο νέο VB.NET. Όπως λένε στη Βρετανία, "Για μια δεκάρα, σε μια λίβρα".

Χωρίς περαιτέρω καθυστέρηση, εδώ είναι η πολύ προσωπική μου λίστα των πέντε κορυφαίων αλλαγών από VB6 σε VB.NET σε αντίστροφη σειρά.

Wellllll... μόνο μία ακόμη καθυστέρηση. Εφόσον αλλάζουμε από το VB6, όπου ένας πίνακας δηλώθηκε ως Dim myArray (5) έχει 6 στοιχεία, έχουμε έξι από αυτά. Είναι μόνο τοποθέτηση ...

(Κύλινδρος τυμπάνου παρακαλώ ...)

03

του 08

Βραβείο (5) - Αλλαγή σύνταξης τύπου C

"Βραβείο (5)", μας 6η θέση βραβείο πηγαίνει στην επιλογή ομάδων C: Αλλαγές σύνταξης τύπου C!

Τώρα μπορείτε να κωδικοποιήσετε a + = 1 αντί για a = a + 1, εξοικονομώντας ΤΡΙΑ ΟΛΟΚΛΗΡΩΜΕΝΑ KEYSTROKES!

Προγραμματιστές του Κόσμου, Χαίρομαι! Το VB έχει αυξηθεί σε επίπεδο C και μια ολόκληρη νέα γενιά που προσπαθεί να μάθει VB θα πάρει λίγο πιο κοντά στη μαζική σύγχυση που αντιμετωπίζει οι σπουδαστές της C ++.

Αλλά περίμενε! Υπάρχουν περισσότερα!

Το VB.NET διαθέτει πλέον "λογική βραχυκυκλώματος" που έχει εισαγάγει τα λεπτές σφάλματα στον κώδικα C ++ για χρόνια για να εξοικονομήσει πολύτιμα νανοδευτερόλεπτα του χρόνου επεξεργαστή. Η λογική βραχυκυκλώματος αξιολογεί μόνο τις πολλαπλές συνθήκες σε μια λογική δήλωση αν είναι απαραίτητο. Για παράδειγμα:

Dim R Ως Boolean
R = Λειτουργία1 () και Λειτουργία2 ()

Στο VB6, και οι δύο λειτουργίες αξιολογούνται είτε το χρειάζονται είτε όχι. Με το VB.NET, εάν η λειτουργία1 () είναι ψευδής, η λειτουργία2 () αγνοείται, αφού το "R" δεν μπορεί να είναι αληθινό. Αλλά, τι γίνεται αν αλλάξει μια παγκόσμια μεταβλητή στο Function2 () - απλά τυχαία (οι προγραμματιστές C ++ θα έλεγαν, "από κακό προγραμματισμό "). Γιατί ο κώδικας μου παράγει μια λανθασμένη απάντηση κάποια στιγμή όταν μεταφράζεται σε VB.NET; Αυτό μπορεί να είναι αυτό!

Για Δοκιμάστεσκληρότερο, το VB.NET θα το κάνει Σύλληψη λίγη τύχη και Τελικά να αναγνωρίζεται για "εξαιρετικό" χειρισμό σφαλμάτων.

Το VB6 είχε το τελευταίο GoTo: "On Error GoTo". Ακόμη και εγώ πρέπει να παραδεχτώ ότι η χειραγώγηση των εξατομικευμένων εξαιρέσεων του C ++ στυλ "Try-Catch-Finally" είναι μια τεράστια βελτίωση όχι μόνο για μισή τεράστια βελτίωση.

Τι, λέτε "On Error GoTo" είναι ακόμα στο VB.NET; Wellll... Προσπαθούμε να μην μιλήσουμε γι 'αυτό πάρα πολύ.

04

του 08

5η θέση - Οι διάφορες αλλαγές εντολών

5η θέση η επιλογή είναι ένα βραβείο ομάδας: Οι αλλαγές στις διάφορες εντολές! Θα πρέπει να μοιραστούν αυτό το βραβείο και υπάρχει ένα gazillion 'em. Η Microsoft έχει εξοικονομήσει για δέκα χρόνια και πραγματικά κόβονται χαλαρά.

Το VB.NET δεν υποστηρίζει πλέον τις λειτουργίες VarPtr, ObjPtr και StrPtr που ανακτούν τη διεύθυνση μνήμης των μεταβλητών. Και δεν υποστηρίζει το VB6 LSet το οποίο χρησιμοποιήθηκε για τη μετατροπή ενός τύπου χρήστη σε άλλο. (Να μην συγχέεται με το VB6 LSet που κάνει κάτι εντελώς διαφορετικό - βλ. Παρακάτω).

Επίσης, προσφέρουμε αμοιβαία προσφορά για να αφήσει, να λείπει, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar και (προσωπικά αγαπημένο μου) GoSub.

Ο κύκλος έχει μετατραπεί σε GDI + DrawEllipse. Το ίδιο ισχύει και για το Line to DrawLine. Στον υπολογισμό έχουμε τώρα Atan αντί για Atn, Sign εισέρχεται για Sgn, και Sqrt ταιριάζει για το μεγάλο παιχνίδι αντί για Sqr.

Στην επεξεργασία των συμβολοσειρών, ακόμα κι αν είναι ακόμα διαθέσιμα αν αναφέρετε μια συμβατότητα με τη Microsoft namespace, έχουμε PadRight για το LSet του VB6 (πάλι, εντελώς διαφορετικό από το LSet της VB6, φυσικά) και το PadLeft για το RSet. (Υπάρχουν τρεις πληκτρολογήσεις που αποθηκεύσαμε με "+ ="!)

Και φυσικά, δεδομένου ότι είμαστε OOP τώρα, μην ανησυχείτε αν το Property Set, το Property Let, και το Property Get δεν πληρούνται στο VB.NET, στοιχηματίζετε!

Τέλος, Debug. Η εκτύπωση γίνεται είτε Debug. Γράψτε ή Debug. WriteLine. Μόνο τα κόκαλα εκτυπώνουν τα πάντα έτσι κι αλλιώς.

Αυτό δεν αγγίζει ούτε όλες τις ΝΕΕΣ εντολές στο VB.NET, αλλά πρέπει να σταματήσουμε κάπου αυτές τις ανοησίες.

05

του 08

4η θέση - Αλλαγές στις κλήσεις διαδικασίας

Σε 4η θέση, έχουμε Αλλαγές στις κλήσεις διαδικασίας!

Αυτό είναι το βραβείο "καλοσύνη, αγνότητα και υγιεινή αρετή" και αντιπροσωπεύει πολλή σκληρή εκστρατεία από τη φατρία "όχι πια".

Στο VB6, εάν μια μεταβλητή παραμέτρου διαδικασίας είναι εγγενής τύπος, τότε είναι ByRef, εκτός αν το έχετε κωδικοποιήσει ByVal ρητά, αλλά αν δεν είναι κωδικοποιημένο ByRef ή ByVal και δεν είναι μια εγγενής μεταβλητή τότε είναι ByVal... Το κατάλαβα?

Στο VB.NET, είναι ByVal εκτός αν είναι κωδικοποιημένο ByRef.

Το προεπιλεγμένο ByVal VB.NET, επίσης, εμποδίζει τις μεταβολές των μεταβλητών παραμέτρων στις διαδικασίες από το να μην αναπαράγονται ακούσια στον τηλεφωνητή - ένα βασικό μέρος του καλού προγραμματισμού OOP.

Επίσης, η Microsoft "υπερφορτώνει" το VB.NET με αλλαγή στις απαιτήσεις για παρενθέσεις στις κλήσεις διαδικασίας.

Στο VB6, παρέχονται παρενθέσεις γύρω από τα επιχειρήματα κατά την πραγματοποίηση κλήσεων λειτουργίας, αλλά όχι όταν καλείτε μια υπορουτίνα όταν δεν χρησιμοποιείτε την εντολή κλήσης, αλλά απαιτούνται όταν χρησιμοποιείται η εντολή κλήσης.

Στο VB.NET, οι παρενθέσεις απαιτούνται πάντα γύρω από μια λίστα μη υποστηριζόμενων παραμέτρων.

06

του 08

3η θέση - Οι συστοιχίες είναι βασισμένες σε 0 αντί για 1 βάση

Το βραβείο του Χαλκού - 3η θέση, πηγαίνει στο Οι συστοιχίες είναι βασισμένες σε 0 αντί για βάση 1!

Είναι μόνο μια αλλαγή σύνταξης, αλλά αυτή η αλλαγή παίρνει την κατάσταση "μετάλλων στο βάθρο" επειδή ψηφίζεται "πιθανότατα να σπάσει τη λογική του προγράμματος". Θυμηθείτε, 3η θέση ΕΙΝΑΙ "Βραβείο (2)" στη λίστα μας. Εάν έχετε μετρητές και συστοιχίες στο πρόγραμμα VB6 (και πόσοι δεν το κάνουν), αυτό θα σας ΜΑΘΕΤΕ.

Για δέκα χρόνια, οι άνθρωποι έχουν ρωτήσει: "Τι ήταν το κάπνισμα της Microsoft όταν το έκαναν έτσι;" Και για δέκα χρόνια, οι προγραμματιστές έχουν είδος γενικά αγνόησε το γεγονός ότι υπήρχε ένα στοιχείο myArray (0) που απλώς κατέλαβε χώρο και δεν εξοικειώθηκε με Οτιδήποτε... Εκτός από εκείνους τους προγραμματιστές που το χρησιμοποιούσαν και τα προγράμματά τους φαινόταν, εννοώ, απλά "παράξενο".

Για το I = 1 έως 5
MyArray (I - 1) = Ο, τιδήποτε
Επόμενο

Εννοώ, ΠΡΑΓΜΑΤΙΚΑ! ...

07

του 08

2η θέση - Ο τύπος δεδομένων παραλλαγής

Το ασημένιο μετάλλιο της 2η θέση πηγαίνει να τιμήσει έναν παλιό φίλο που έπεσε στο κουβάδες του προγραμματισμού με το πέρασμα του VB6! Δεν μιλάω για κανένα άλλο, Ο τύπος δεδομένων παραλλαγής.

Πιθανώς κανένα άλλο χαρακτηριστικό της Visual Basic "notNet" αντιπροσωπεύει καλύτερα τη φιλοσοφία της "γρήγορης, φθηνής και χαλαρής". Αυτή η εικόνα υποκίνησε το VB μέχρι την εισαγωγή του VB.NET. Είμαι αρκετά μεγάλος για να θυμηθώ την εισαγωγή της Visual Basic 3.0 από τη Microsoft: "Ω Wow! Κοιτάξτε εδώ! Με το νέο, βελτιωμένο τύπο δεδομένων Variant, δεν χρειάζεται να δηλώνετε μεταβλητές ή όχι. Μπορείτε απλά να σκεφτείτε τα και να τα κωδικοποιήσετε.

Η Microsoft άλλαξε πολύ γρήγορα τη μουσική της και συνέστησε να δηλώσει μεταβλητές με ένα συγκεκριμένο τύπο δεδομένων σχεδόν αμέσως, αφήνοντας πολλούς από μας να αναρωτηθούμε, "Αν δεν μπορείτε να χρησιμοποιήσετε Variants, γιατί τους έχουν; "

Αλλά ενώ είμαστε στο θέμα των τύπων δεδομένων, θα πρέπει να αναφέρω ότι πολλά datatypes έχουν αλλάξει εκτός από την πτώση της Variant σε υγρό τσιμέντο. Υπάρχει ένας νέος τύπος χαρακτήρων Char και ένας τύπος δεδομένων Long που είναι 64 bit. Το δεκαδικό είναι διαφορετικό. Το Short και το Integer δεν έχουν το ίδιο μήκος πια.

Και υπάρχει ένας νέος τύπος δεδομένων "Object" που μπορεί να είναι Οτιδήποτε. Άκουσα κάποιον να λέει, "Ο γιος της παραλλαγής"?

08

του 08

1η θέση - Το VB.NET είναι τελικά πλήρως αντικειμενοστρεφές

Τελικά! Το Χρυσό Μετάλλιο, 1η θέση, το υψηλότερο βραβείο που μπορώ να δώσω πηγαίνει ...

TA DAH!

Το VB.NET είναι τελικά εντελώς αντικειμενοστρεφές!

Τώρα όταν πηγαίνετε στην παραλία, οι προγραμματιστές C ++ δεν θα χτυπήσουν άμμο στο πρόσωπό σας και δεν θα σας κλέψουν (φίλη / φίλος - επιλέξτε ένα). Και μπορείς ακόμη κωδικοποιήστε μια πλήρη Δοκιμαστική Ισορροπία Γενικού Λογιστηρίου ενώ προσπαθούν να καταλάβουν ποια αρχεία επικεφαλίδας θα συμπεριληφθούν.

Για πρώτη φορά, μπορείτε να κωδικοποιήσετε όσο το δυνατόν πιο κοντά στο τσιπ και να έχετε πρόσβαση σε όλα τα εσωτερικά συστήματα που επιθυμείτε χωρίς πρέπει να καταφύγουμε σε αυτές τις δυσάρεστες κλήσεις API του Win32. Έχεις κληρονομικότητα, υπερφόρτωση λειτουργίας, ασύγχρονη πολυθρόνα, συλλογή σκουπιδιών και τα παντα είναι ένα αντικείμενο. Μπορεί η ζωή να βελτιωθεί;

Άκουσα κάποιον να λέει ότι η C ++ έχει πολλαπλή κληρονομιά και το .NET εξακολουθεί να μην το κάνει;

Κάψτε τον αιρετικό!