2009-03-17 19 views
0

Was ist das Hauptproblem, wenn ich den Typ einer Variablen nicht deklariere? Wie, Dim var1 gegenüber Dim var1 as Integer.Variablen in Visual Basic verstehen

+0

Ich bin mir nicht sicher, was Ihr Problem ist. Bitte poste ein paar Beispiele, die zeigen, welches Problem du hast. – Juliet

+0

Ich möchte nur wissen, warum manche sagen, dass es eine schlechte Sache ist. – Daniel

+0

Dies ist eine ziemlich subjektive Frage. Ich denke, es wäre angebracht, eine Community-Wiki-Frage zu stellen. –

Antwort

7

Der Hauptgrund, Variablentypen in Sprachen zu deklarieren, die es Ihnen erlauben, Variantentypen zu verwenden, ist eine Überprüfung Ihrer selbst. Wenn Sie eine Variable haben, die Sie verwenden, um eine Zeichenfolge zu halten, und dann versehentlich an eine Funktion übergeben, die eine Ganzzahl erwartet, kann der Compiler Sie nicht sagen, dass Sie versagt haben, wenn Sie es das sagen Diese Variable sollte immer eine Zeichenkette sein. Stattdessen bleiben Sie bei der Neuinterpretation Ihrer Zeichenfolge als Integer, was Ihnen nie das liefert, was Sie wollen, und die Ergebnisse werden wahrscheinlich verwirrend sein, und es wird schwierig sein, den Fehler aufzuspüren.

In so ziemlich allen Sprachen gibt es viele Konstrukte, wo Sie es weglassen könnten und Ihr Programm würde funktionieren, aber als eine Überprüfung für den Programmierer existieren. Der erste Job eines Compilers besteht darin, Ihren Code zu einer ausführbaren Datei zu machen. Aber der zweite Job des Compilers ist es, so viel wie möglich zu versuchen, um sicherzustellen, dass der Programmierer keinen Fehler gemacht hat. Vor allem, wenn Ihr Programm groß wird, ist es einfacher, den Compiler Fehler wie diese zu finden, anstatt darauf zu vertrauen, dass Sie alles genau richtig eingegeben haben.

Darüber hinaus gibt es normalerweise einige Verarbeitungsaufwand mit Varianten verbunden, aber das ist ein kleineres Problem.

+0

Danke, nette Antwort, die du gepostet hast. Ich habe die Idee! – Daniel

0

Oberflächlich, wenn Sie den Typ nicht deklarieren, kann Intellisense Ihnen damit nicht helfen, weil er nicht weiß, um welchen Typ es sich handelt.

1

Jemand anderes bereits erwähnt Intellisense, aber aber es lohnt sich zu wiederholen.

Wenn Sie außerdem einen expliziten Typ für Ihre Variable deklarieren, ermöglichen Sie dem Compiler, alle Arten von zusätzlichen Typüberprüfungen und Überprüfungen Ihres Codes durchzuführen, die andernfalls nicht möglich wären. Was passiert ist, dass jetzt bestimmte Arten von sehr häufigen Fehler gefangen und zur Kompilierzeit statt Laufzeit behoben werden. Der Benutzer sieht sie nie. Sie möchten keine Fehler für die Laufzeit hinterlassen.

Sie sagen "es könnte alles sein" — und das ist wahr. Aber dann sagst du "so muss es gut sein". Das folgt nicht unbedingt, und es ist sehr gefährlich. Nicht alles kann zugewiesen oder mit allem anderen kombiniert werden. Es könnte alles sein — aber es ist ist etwas, oder eher eine bestimmte Sache. Ohne einen expliziten Typ kann der Compiler nichts wissen und kann Ihnen nicht helfen, Fehler zu vermeiden.

3

Es gibt ein paar Gründe:

  • Erheblich verbesserte Art Sicherheit.
  • Geringerer kognitiver Overhead; der Compiler und Intellisense können Ihnen helfen.
  • Geringerer Leistungsaufwand; Die Umwandlung von Dingen in und aus Variant Arten hat einen kleinen, aber nicht trivialen Preis.
  • Eliminiert die Notwendigkeit zur Benennung von Warzen (z. B. lblTitle, um Ihnen zu sagen, dass etwas eine Label halten soll).
  • Verschiebt einige Arten von Laufzeitfehlern in Kompilierungsfehler, was einen großen Produktivitätsgewinn darstellt.
0

Vergleichen Sie dies mit Pythons Typisierung.Python erlaubt einem Entwickler, eine Variable zu verwenden, ohne vorher den Typ zu deklarieren, aber sobald eine Variable verwendet wird, ist der Typ festgelegt. Eine Variante kann dagegen zunächst mit einer beliebigen Art von Wert belegt werden, und später kann ohne Warnung oder Beschwerde ein anderer Typ gespeichert werden. Sie können also eine Zeichenfolge in eine Variable einfügen, die zuvor eine Zahl enthielt.

Dim myvar1 
myvar1 = 1 

'A whole lot more code 

myvar1 = "this string" 

Wenn Sie jemals jemand anderes Code zu pflegen haben, werden Sie beginnen zu verstehen, warum diese Art der Sache (eine variable Art leise Wechsel) Extra kann hart sein zu halten. Besonders wenn Sie eine Modulebenevariable verwenden, könnte dies zu einigen wirklich interessanten Problemen führen. Dies entspricht der Verwendung von Option Explicit im VB-Code. Ohne Option Explicit Sie können diese Art der Sache zu tun, ohne es zu merken:

myvar1 = 1 

'A whole lot more code here too 

myvarl = 2 

In einigen Schriftarten diese beiden Variablennamen unmöglich sein würde, zu unterscheiden und diese zu einem gewissen harten führen könnten Fehler zu finden.