2012-04-18 4 views
5

Ich schreibe etwas Code in Visual Basic 6 und ich habe festgestellt, dass ich nicht einmal Variablen für die Dinge zu arbeiten deklarieren müssen.Sollte ich explizit meine Variablen in VB6 deklarieren

Die folgende (explizite Erklärung):

Dim foo As String 
foo = "Bar" 

scheint genauso gut wie diese (implizite Deklaration) zu arbeiten:

Dim foo 
foo = "Bar" 

Oder diese (keine Erklärung):

foo = "Bar" 

Ich weiß in C# Ich muss eine Variable deklarieren, bevor ich es benutze, und das implizite und explizite Deklarat Ionen sind beide akzeptabel. Ich weiß auch, dass Sie in Python Ihre Variablen überhaupt nicht deklarieren, bevor Sie sie verwenden.

In Bezug auf Visual Basic 6 (und durch die Erweiterung VBA) was ist richtig?

Dank

+0

+1 Eine sehr gute Frage! –

Antwort

6

Soll ich ausdrücklich meine Variablen in VB6 erklären?

Ja. Warum?

Nicht nur weil es eine gute Angewohnheit ist oder es ist ein Muss, sondern aus nur einem Hauptgrund, den ich in diesem Beitrag auch erwähnt habe.

VB setzt die Variable standardmäßig auf den Typ Variant. Ein Variant-Typ Variable kann jede Art von Daten von Strings, zu ganzen Zahlen, zu langen ganzen Zahlen, zu Daten, zu Währung usw. halten. Standardmäßig sind "Varianten" die "langsamsten" Art von Variablen.

UND

Wie ich bereits erwähnt, wenn Sie den Typen der keine Variable angeben, VB Standardwerte der Variable Typ Variant ist. Und Sie würde das nicht wollen, da es Ihren Code verlangsamen würde, da der VB Compiler Zeit braucht, um zu entscheiden, welche Art von Variable Sie verwenden. Die Varianten sollten ebenfalls vermieden werden, da sie für die möglichen "Type Mismatch Errors" verantwortlich sind.

Thema: Um 'Err' Der Mensch ist (siehe Punkt 3)

-Link: http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

Der obige Link auch andere Teile umfasst im Zusammenhang mit, dass eine Codierung kann/sollte nehmen Pflege von.

HTH

+0

+1 Deklarieren Sie Ihre Variablen ist immer gut. Wenn Sie sie jedoch nicht deklarieren, suffi- zieren Sie sie mit entsprechenden Bezeichnern wie $, & usw., so dass sie nicht als Variante angenommen werden. z.B. abc $ ist string, xyz & wäre lang usw. –

9

Es ist eine gute HABIT.

Es gibt eine VB-Option namens Option Explicit. Mit diesem Satz auf ON, dann sind Sie VB Kräfte eine Variable zu deklarieren, bevor Sie es benutzen nicht mehr

foo = "Bar" 

, die später in Ihrem Code mit Vertippen den Variablennamen ... ohne das hilft, können Sie die Variable typso Name, dein Programm kompiliert, aber wird nicht funktionieren, und es ist schwer, das auszugraben.

+0

+1. Sie können auch 'DefObj A-Z' in jedem Modul verwenden, um es sehr unwahrscheinlich zu machen, dass Sie den Typ versehentlich auslassen, indem Sie' Dim foo' ohne den Typ schreiben. Kudos zu [Jim Mack] (http://Stackoverflow.com/a/1905044/15639) ... Oh BTW ist der Tippfehler im Wort Tippfehler :) – MarkJ

9

Aktivieren Sie auf der Registerkarte Tools/Optionen auf der Registerkarte Editor das Kontrollkästchen Anforderung der Variablendeklaration. Dies fügt automatisch zu jedem neuen Codemodul Option Explizit hinzu.

enter image description here

Ich würde sagen, dass dies als eine Best-Practice mehr ist; Ich denke, es ist eine Voraussetzung für die geistige Gesundheit von Programmierern. Die Einstellung ist dauerhaft; Einmal eingestellt, bleibt es aktiviert. Microsoft hat es zu einer Option gemacht, weil einige ältere Versionen von VB die Funktion nicht hatten, was auch erklärt, warum es standardmäßig deaktiviert war.

4

Ich empfehle, dass Sie immer Ihre Variablen deklarieren. Dies kann erzwungen werden, indem Option Explicit in jedem Codemodul gesetzt wird. Sie können VB6 das automatisch für Sie tun lassen, indem Sie auf Extras-> Optionen gehen, auf der Registerkarte Editor aktivieren Sie Variablendeklaration.

Wenn Sie Option Explicit nicht verwenden, wird bei jedem Verweis auf einen zuvor unbekannten Variablennamen automatisch eine Variable für Sie erstellt. Dies ist ein sehr gefährliches Verhalten, denn wenn Sie einen Variablennamen falsch eingeben, wird eine leere Variable für Sie erstellt, die zu unerwartetem Verhalten Ihres Codes führt.

Sie nicht müssen deklarieren Sie den Typ Ihrer Variablen, aber ich würde auch empfehlen, dass Sie das tun. Der Standardtyp einer Variablen ist Variant, der einen geringen Leistungsaufwand verursacht und einige Probleme verursacht, wenn Sie COM-Objekte für die Verwendung von C++ oder C# erstellen (falls dies jemand mehr tut).

+0

+1. Sie können auch 'DefObj A-Z' in jedem Modul verwenden, um es sehr unwahrscheinlich zu machen, dass Sie den Typ versehentlich auslassen, indem Sie' Dim foo' ohne den Typ schreiben. Kudos zu [Jim Mack] (http://stackoverflow.com/a/1905044/15639) – MarkJ