Das Wort zum Sonntag
23.03.2008 17:18:00
Nepumuk
ich sehe das oft in Foren und herunter geladenen Mappen. Da werden wahre Monsterprozeduren verwendet, die 100 Funktionen in sich vereinen, aber kaum noch zu durchschauen sind.
Das macht es anderen Programmierern schwer und erhöht damit den Wartungsaufwand.
Auch wenn es etwas Selbstgeschriebenes ist, denn nach ein paar Monaten hat "man" oft keinen Schimmer mehr, was "man" sich damals dabei gedacht hat.
Darum heute mal zum Thema sauber programmieren.
1. Modularisierung - Sprich es werden keine Fünfhundertzeiler geschrieben, sondern kleine, überschaubare Einheiten mit wenigen Funktionen. Die lassen sich leichter lesen, warten und zusätzlich auch noch mehrfach verwenden.
2. Das Hauptprogramm besteht eigentlich nur aus Aufrufen dieser kleinen Einheiten. Da lässt sich dann schnell eine zusätzliche Funktion integrieren.
3. Diese kleinen Einheiten sind alles Funktionen die den Erfolg oder Misserfolg als True oder False zurückgeben. Damit lässt sich im Steuerprogramm eine If - Then Verschachtelung aufbauen. Wenn also ein Teil nicht ausgeführt werden kann, dann werden die nachfolgenden Funktionen gar nicht mehr aufgerufen.
4. Deklarationen - Die gehören alle in den Kopf einer Prozedur. Denn es bringt nichts zu versuchen, bedingt eine Variable anzulegen. Dazu folgendes Beispiel:
Public Sub Beispiel()
Dim intVariable1 As Integer
If intVariable1 = 1 Then
Dim intVariable2 As Integer
End If
MsgBox intVariable2
End Sub
Dim intVariable1 As Integer
If intVariable1 = 1 Then
Dim intVariable2 As Integer
End If
MsgBox intVariable2
End Sub
Die Variable wird anscheinend nicht dimensioniert und es gibt doch keinen Fehler? Klar, denn in dem Moment, in dem die Prozedur kompiliert wird, werden alle Dim-Anweisungen ausgeführt. Egal wo sie in der Prozedur stehen. Verwenden lassen sie sich allerdings nur nach der Dim-Anweisung.
5. Variablennamen hier mochte ich eine Seite empfehlen:
http://www.it-academy.cc/article/995/Ungarische+Notation+fuer+Visual+Basic.html
Es ist kaum Mehraufwand, da der komplette Name meistens nur einmal geschrieben werden muss. Für jedes weitere mal benutze ich die ersten vier Buchstaben und dann die Tastenkombination Strg+Leertaste. Dann steht der Name meistens schon komplett da, ansonsten ist er nicht sehr tief in der aufpoppenden Liste zum auswählen. Die Namen sollten sprechend sein. In den Urzeiten von VB waren die Namen auf 8 Zeichen beschränkt, da hatte ich oft Schwierigkeiten einen sprechenden zu finden. Heute kann der Name 255 Zeichen lang sein, also fast eine ganz kleine Kurzgeschichte. Nutzt das!
6. Jede Zeile wird kommentiert. Ok, auch ich erspare mir den Kommentar für jedes End If und jedes Next. Aber ansonsten zieh ich das durch. Denn bei Projekten mit mehreren tausend Programmzeilen gibt es nur eins was besser ist als viele Kommentare: Noch mehr Kommentare.
Und jetzt Mal ein Beispiel wie das bei mir in Echt aussieht. Na gut, nicht ganz, denn in Wirklichkeit ist bei mir alles in englisch, heute ausnahmsweise in deutsch denn nicht jeder ist sprachbegabt. ;-)
https://www.herber.de/bbs/user/50956.xls
Eigentlich wollt ich nur den Code reinstellen, aber irgendwie verträgt mein JeanieButton die Zeilennummerierung nicht. Deswegen diesmal hochgeladen.
Die Zeilennummern erzeuge ich übrigens automatisch mit einem selbstgeschriebenen Addin. Falls du Interesse hast. Damit bekomme ich bei jeder Fehlermeldung auch die Zeile geliefert, in welcher der Fehler passierte.
Die Fehlermeldungen selbst werden eigentlich in ein Logfile geschrieben und nicht direkt als MsgBox ausgegeben. Aber wie du eine Textdatei erzeugt und Datensätze reinschreibst muss ich dir wohl nicht erklären. Es ist ja wie gesagt nur ein Beispiel ganz speziell für dich.
Gruß
Nepumuk