Was tun Option Strict und Option Explicit?

Ich habe diesen Beitrag gesehen:

Tipperrors … Benutze die Option strikt und explizit bitte. Während eines Software-Entwicklungsprojekts, das ich als Berater betreute, wurden überall lächerliche Mengen von Fehlern angezeigt … es stellte sich heraus, dass der Entwickler keine buchstabieren konnte und Variablen mit falscher Schreibweise deklarieren würde. Keine große Sache, bis Sie die richtige Schreibweise verwenden, wenn Sie ihm einen Wert zuweisen … und Sie hatten die Option explizit deaktiviert. Autsch für sie … ”

Was ist Option Strict und Option Explicit jeden Fall? Ich habe es gegooglet, kann aber die Idee nicht bekommen (weil es meistens Visual Basic ist, ich mache PHP).

Option Explicit bedeutet, dass alle Variablen deklariert werden müssen. Siehe hier . Ohne dies können Sie versehentlich eine neue Variable deklarieren, indem Sie einfach einen anderen Variablennamen falsch schreiben. Dies ist eines der Dinge, die eine Menge Kummer verursachen, während Sie versuchen, VB-Programme zu debuggen und herauszufinden, warum Ihr Programm nicht richtig funktioniert. Meiner Meinung nach sollte dies nicht einmal eine Option sein – es sollte immer eingeschaltet sein.

Option Strict “beschränkt implizite Datentypkonvertierungen nur auf das Konvertieren von Konvertierungen”. Siehe hier . Wenn diese Option aktiviert ist, können Sie nicht versehentlich einen Datentyp in einen anderen konvertieren, der weniger genau ist (z. B. von Integer zu Byte ). Auch hier sollte eine Option standardmäßig aktiviert sein.

TL; DR

Option Strict und Option Explicit helfen Ihnen, potenzielle und tatsächliche Fehler zur Entwurfszeit zu erkennen , anstatt dass Ihr Code zur Laufzeit kompiliert und abstürzt . Sie sollten Beide einschalten

Option Strict und Option Explicit sind standardmäßig deaktiviert. Um sie einzuschalten:

Option Strict Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict . Stellen Sie es auf On .

Option Explizite Tools -> Options -> Editor -> Require Variable Declaration . kreuzen Sie an.

Option Explizit

Mit Option Explicit Off müssen Sie eine Variable nicht deklarieren (Dim), bevor Sie sie verwenden:

a = 123 'a is automatically declared as an Integer

Dies wird gefährlich, wenn Sie eine Variable an einer Stelle deklarieren und denken, dass Sie sie später verwenden, sie aber falsch eingeben:

 Dim counter As Integer = 0 'some lines later... countr = 55 'This creates a new variable called countr 

Oder schlimmer noch, Sie weisen einer Variablen einen Wert zu, von dem Sie denken , dass er sich im Gültigkeitsbereich befindet, aber das ist nicht der Fall, und Sie deklarieren am Ende eine neue Variable mit demselben Namen, aber unterschiedlichem Gültigkeitsbereich.

Mit viel Code oder langen Methoden können diese leicht zu übersehen werden, sollten Sie immer einschalten, um diese Art von Problemen zu vermeiden

Option streng

Mit Option Strict Off können Sie einen Datentyp implizit in einen Verengungstyp ohne Fehler konvertieren

 Dim d As Double = 999.99 Dim s As Single = d 'No error with Option Strict Off 

In diesen Fällen dient Option Strict als Warnung für den Entwickler, um sicherzustellen, dass der doppelte Wert niemals Single.MaxValue überschreitet

Sie können auch eine Enum dem errorshaften Wert ohne Fehler zuweisen. Das Folgende ist ein reales Beispiel dafür:

Bildbeschreibung hier eingeben

Die Variable hätte auf EOpticalCalStates.FAILED (24) gesetzt werden sollen, tatsächlich setzt sie den EOpticalCalStates.ALI_HOR auf einen Wert von 4, der äquivalent zu EOpticalCalStates.ALI_HOR

So etwas ist nicht leicht zu erkennen.

Daher sollte Option Strict standardmäßig aktiviert sein. Diese Einstellung sollte standardmäßig aktiviert sein, aber Microsoft hat entschieden, die Einstellung zu deaktivieren, um die Rückwärtskompatibilität zu erhöhen (was im Nachhinein ein Fehler IMO war).

Details finden Sie hier: http://support.microsoft.com/kb/311329

Die Option Explizite statement

Standardmäßig erzwingt der Visual Basic .NET- oder Visual Basic-Compiler die explizite Variablendeklaration. Dazu müssen Sie jede Variable deklarieren, bevor Sie sie verwenden. Informationen zum Ändern dieses Standardverhaltens finden Sie im Abschnitt Ändern der Standardprojektwerte.

Die Option Strict-statement

Standardmäßig erzwingt der Visual Basic .NET- oder der Visual Basic-Compiler keine strikte Datentypisierung. Informationen zum Ändern dieses Standardverhaltens finden Sie im Abschnitt Ändern der Standardprojektwerte.