Visual Basic: Stabilen, lesbaren Code schreiben
Tipps und Tricks für das Schreiben fehlerfreier, stabiler und lesbarer Programme mit Visual Basic und Visual Basic for Applications (VBA).Variablendeklaration erzwingen mit „Option Explicit“
Diese unselige Tradition hat Visual Basic bis heute fortgesetzt. Aber es gibt Abhilfe: Geben sie die Schlüsselworte "Option Explicit" am Anfang jeder Form, jedes Moduls oder Klassenmoduls ein und der Compiler wird jede Verwendung einer nicht deklarierten Variablen anzeigen. Das bedeutet natürlich zuerst mehr Tipparbeit, aber es erspart ihnen eine langwierige Fehlersuche, wenn die Variable "UserName" nur noch einen Leerstring enthält, weil der Inhalt der Variablen "UsreName" zugewiesen wurde.
Sie können die entsprechende Einstellung natürlich auch im Visual Studio in den Optionen vornehmen.
Der Options-Dialog im Visual Studio 2008 (Bild: Henning Schünke)
Aussagekräftige Variablennamen wählen - Auch die Variablennamen sind es wert, sich darüber Gedanken zu machen.
Sie sollten etwas über den Datentyp und den Zweck der Variablen aussagen. Den Typ können sie durch die ersten drei klein geschriebenen Buchstaben angeben, also int für Integer oder str für String. Danach kommt dann ein möglichst sprechender Name für die Bedeutung der Variablen. Also möglichst nicht strName sondern strUserName, sofern das der tatsächlichen Bedeutung der Variablen entspricht.
Die gemischte Groß- /Kleinschreibung erleichtert dabei das Lesen, hilft aber auch, Fehler im Zusammenhang mit der Variablendeklaration zu erkennen. Der Visual Basic Editor wird jede Variable in der Schreibweise darstellen, in der sie deklariert wurde. Wenn Sie also bei der Variablendeklaration bereits "Dim strUserName As String" geschrieben haben, wird der Editor den von Ihnen flott eingetippten Namen "strusername" nach Eingabe des folgenden Leerzeichens oder Zeilenwechsels in gemischte Groß-/Kleinschreibung umwandeln. Geschieht das nicht, ist es sehr wahrscheinlich, dass der von ihnen eingegebene Name in dieser Schreibweise noch nicht deklariert wurde.
Wenn Sie Zahlen (z. B. für Berechnungen) "hart codiert" in ihren Programmen verwenden, sollten Sie so oft wie möglich Konstanten benutzen. Diese können am Anfang eines Moduls deklariert werden und müssen auch nur dort geändert werden. Angenommen, sie wollen ein Datenfeld (Array) mit einem maximalen Index von Zwei deklarieren, etwa so:
Dim strUserNames(0 To 2) As String
An einer anderen Stelle im Code sollen alle Elemente dieses Datenfeldes in einer For..Next Schleife bearbeitet werden. Hier werden Sie also wieder die Information über den maximalen Index des Datenfeldes benötigen.
For intIdx = 0 To 2
MsgBox(strUserNames(intIdx)) ‘ Gibt die Namen in einer Messagebox aus
Next intIdx
Wenn im weiteren Verlauf des Projekts die Größe des Datenfeldes verändert wird, zum Beispiel von Zwei auf Drei, müssen Sie jetzt alle Stellen, an denen der maximale Index abgefragt wird anpassen. Ein stures Ersetzen der Zahl 2 durch 3 führt aber ganz sicher zu Fehlern an anderen Stellen. Sie müssen also den Code von Hand durchsuchen. Mit einer Konstanten gibt es genau eine Stelle, an der diese Änderung vorgenommen werden muss:
Namen von Konstanten werden in der Regel mit GROSSBUCHSTABEN geschrieben, auch um ihre spezielle Eigenschaft der Unveränderlichkeit hervorzuheben.
Code-Beispiel zur Verwendung von Konstanten (Bild: Henning Schünke)
Schleifen und andere Konstrukte - Diese sollten sie erst komplett aufschreiben, dann mit Leben füllen.
Wenn sie Schleifen wie For..Next oder Do..Loop verwenden, schreiben sie zuerst die komplette Schleife, möglichst mit Überprüfung der Endbedingung. Der Visual Basic Editor im Visual Studio ist bereits so zuvorkommend, das für sie zu erledigen. Tippen sie zum Beispiel "Do" als Beginn einer Do..Loop Schleife ein, steht beim Abschließen der Zeile mit Enter ein "Loop" zwei Zeilen darunter.
Geben Sie "For intIdx = 0 to MAX_USERNAMES" ein, so wird nach dem Abschluss der Zeile ein "Next" darunter gesetzt. Sie können jetzt hinter das Schlüsselwort Next den Namen der Laufvariable schreiben, hier "intIdx". Das ist für die Funktion unerheblich, erhöht aber die Lesbarkeit, besonders bei mehreren ineinander geschachtelten Schleifen.
Danach können Sie sich Gedanken über das Innenleben der Schleife machen. Zu leicht wird darüber der Befehl vergessen, der die Schleife abschließt.
Gleiches gilt für das Öffnen von Dateien oder das Belegen von Speicher: Nachdem Sie den Open-Befehl zum Öffnen der Datei geschrieben haben, setzen sie in die nächste Zeile den entsprechenden Close-Befehl, um sie wieder zu Schließen. Alles was Sie mit der Datei machen wollen, kommt dazwischen. Nicht geschlossene Dateien sind eine häufige Ursache für Fehler.
Wenn Sie Speicher belegen, geben Sie den Speicher in der nächsten Zeile wieder frei und fügen Sie die Befehle zum Bearbeiten des Speicherinhalts dazwischen ein. Speicherlecks sind Fehler, die entstehen, wenn belegter Speicher vom Programm nicht wieder freigegeben wird. Diese sind im Nachhinein oft sehr schwer zu finden.
Einrückungen
Der Visual Basic Editor nimmt die Einrückung automatisch vor, wie in diesem Ausschnitt:
Einrückungen im Visual Basic Code (Bild: Henning Schünke)
Die Tiefe der Einrückung für jede Ebene kann in den Optionen eingestellt werden, im Visual Studio 2008 in den Optionen unter "Text-Editor – Alle Sprachen – Tabstopps".
Sollten sie mit einem anderen Editor arbeiten wollen oder müssen, der diese Einrückungen nicht unterstützt, kann der selbe Codeausschnitt so aussehen:
Visual Basic Code ohne Einrückungen (Bild: Henning Schünke)
Dabei wird es wesentlich schwieriger, die einzelnen Verzweigungsebenen aufzulösen. Hier müssen Sie die If's und End If‘s abzählen, um die Ebenen korrekt zu erkennen.
In welcher Sprache programmieren Sie?
Selbstverständlich ist die Programmiersprache gemeint. Aber natürlich richtet sich der Code auch an Leser, seien es die Teamkollegen aus dem Büro oder die "Offshore-Mitarbeiter" auf der anderen Seite des Globus. Im letzten Fall ist Englisch unumgänglich als Sprache für Variablennamen und Kommentare. Aber auch weil sich im Englischen normalerweise kürzere Worte finden lassen, als im Deutschen, sollten sie überlegen, ihre Variablen- und Prozedurnamen in Englisch zu formulieren.
Als Beispiel eine Prozedur, die in ihrem Programm alle veränderlichen Werte auf die Grundeinstellungen zurücksetzt. Das wäre auf deutsch "SetzeGrundeinstellungen", in Englisch "SetDefaults". Das sind 23 gegenüber elf Zeichen.
Visual Basic 2010 bedeutet in Sachen Sprache, Benutzeroberfläche und .NET Framework viel grundlegend Neues, und dieser Titel bietet Ihnen dazu einen umfassenden Einstieg. Mit de...
Bildquelle:
Paul-Georg Meister
(Eigene Homepage erstellen? Das is zu beachten)