Ein gewisser Programmierstil ist notwendig, um sich selbst und u.a. auch anderen Programmierern das lesen des Sourcecodes nicht unnötig zu erschweren und um seinen eigenen Code auch nach langer Zeit ohne große Probleme zu verstehen. Außerdem zwingt man sich durch einen gewissen Stil selbst zum sauberen Programmieren.
Namensgebung - Die Regeln:
Bei der Vergabe von Variablenamen und Namen für Labels (Sprungmarken) sollten folgende Regeln beachtet werden:
- Namen können beliebig lang sein.
- Namen müssen mit einen Buchstaben (A...Z, a...z) oder einen Unterstrich ( _ ) beginnen.
- Namen dürfen nur alphanumerische Zeichen (Buchstaben und Zahlen) und Unterstriche enthalten.
Im übrigen wird bei Variablen- und Labelnamen die Groß- und Kleinschreibung berücksichtigt. Somit haben die Variablen "MeinTest" und "meintest" nichts miteinander zu tun.
Namensgebung - Der Stil:
Es gibt viele Methoden der Namensgebung von Variablen, Funktionen u.s.w., die das Programmieren erleichtern. Im folgenden werden einige Richtlinien genannt, die dazu dienen sollen, den Überblick zu behalten, wenn das Programm immer weiter anwächst und mehr Variablen, Labels und Proceduren verwendet. Zu Beachten ist auf jedenfall, daß man egal welches System man verwendet, konsequent bleibt. Bei der Sprache, die man für die Bezeichungen wählt, sei aber etwas gesagt. Wenn man z.B. evtl. Open-Source programmieren will, so bietet es sich meist eher an, englische Bezeichnungen und Dokumenationen zu verwenden. Ist man dagegen aber in einem Team von deutschsprachigen Entwicklern, so würde sich dann wohl die Muttersprache als bessere Wahl beweisen. Aber egal, für was man sich entscheidet - man muß nach der Entscheidung konsequent bleiben!
Ich will an dieser Stelle mal ein kleines Beispiel geben, wie man Variablen einfach und sinnvoll bezeichnen könnte:
- Jede Variable beginnt mit der Abkürzung Ihres Types. Als Beispiel: sString.s, lValue.l, dValue.d, bValue.b, qSize.q und so weiter!
Bei Pointers könnte dieses wie folgt aussehen: *pMemory
Bei Arrays würde einfach vor den Arrayname ein "a" für array gesetzt... Als Beispiel DIM aTable
- Bei jeder Variable oder auch andere Namen, die aus mehreren Einzelworten bestehen, könnte der Anfangsbuchstabe eines Wortes immer groß geschrieben
und der Rest klein geschrieben werden. Als Beispiel: lFixedCosts.l oder MyDrawBackground()
- Für Globale Variablen, könnte man immer ein kleines "g_" anfügen. Als Beispiel: g_hWindow
Namensvergebung - Häufige Probleme:
Der folgende Abschnitt beschreibt einige Probleme, die bei schlechter Namensvergabe auftreten können. Wenn irrtümlich auf eine noch nicht vereinbarte Variable zugegriffen wird (weil der falsche Name verwendet wurde), meldet der Compiler keinen Fehler, sondern legt eine neue Varibale an und initialisiert diese mit dem Wert 0. Diese Gefahr kann in PureBasic durch eine eiheitliche Namensvergabe und den Befehl "EnableExplicit" am Anfang des Programmes verringert bzw vermieden werden. Die Verwendung von langen Namen erhöht zwar die Lesbarkeit, birgt aber auch die Gefahr von vermehrten Tippfehlern.
Anmerkungen und Kommentare:
Im Gegensatz zu anderen Basic-Varianten werden in PureBasic Kommentare nicht durch die Anweisung von REM gekennzeichnet, sondern durch das Semikolon. Alles was hinter einem Semikolon bis zum Ende der Zeile folgt, wird als Kommentar betrachtet und vom Compiler ignoriert. Auf diese Weise können Programme dokumentiert werden.
Wenn alle Routinen entsprechend dokumentiert sind, können diese u.a. evtl. in zukünftigen Projekten weiterverwendet werden. Nichts ist so nervig und ärgerlich zugleich, wie eine früher einmal entwickelte Routine zu finden und raten zu müssen, was diese macht oder wie diese funktioniert. Obwohl es sich evtl. ein wenig übertrieben anhört, so sollte wirklich die Funktionsweise einer jeder Routine genau beschrieben werden, es lohnt sich.
Außerdem empfiehlt es sich, in einem Abschnitt am Anfang des Programms eine Dokumentation bzw einen Header einzufügen. Dieser sollte Copyright-Vermerke, eine Liste der vorgenommenen Änderungen (mit Datum) und Author evtl. enthalten. Desweiteren könnte man auch eine Beschreibung sämtlicher Variablen des Programs auflisten.
Techniken der strukturierten Programmierung:
Ein wesentliches Merkmal eines strukturierten Programmes ist die Einrückung von zusammenhängenden Programmabschnitten. Hierdurch wird schon optisch eine Struktur des Programmes erkennbar. Dies betrifft vor allem den Inhalt von Schleifen.
Modularisierung:
Eine Sorgfältige Konzeptplanung ist das wichtigste bei der Entwicklung von Software. Diese führt zu einer Zerlegung des Projektes in kleine Programmabschnitte - somit lassen sich albtraumartige unübersichtliche Sourcecodes vermeiden.
Nach der Entscheidung darüber, wie das Programm unterteilt werden soll, empfiehlt es sich, mit den schwierigsten Teil zu beginnnen und diese auszutesten, solange das Programm noch klein und überschaubar ist. Denn je größer das Programm ist, desto länger und schwieriger wird später die Fehlersuche. Hier ist es empfehlenswert, den in Frage kommenden Abschnitt aus dem Hauptprogramm herauszunehmen und in einem kleinen Testprogramm auszustesten oder den Programmabschnitt in eine Procedure zu packen, welche beim Aufruf entsprechende Werte zurückliefert.
Einige Dinge sollten bei der Entwicklung von Routinen beachtet werden:
- Eine Routine muß in allen möglichen Situationen fertig werden.
- Der Programmcode sollte effizient sein.
- Modularisierung, d.h. eine Routine kehrt immer dahin zurück, von wo aus sie aufgerufen wurde.
- Ausführliche Dokumentation.
- Besonders den Gebrauch von globalen Variablen und Feldern kommentieren und kennzeichnen.
- Alle Routinen müssen "wasserdicht" sein, d.h. sie dürfen nicht abstürzen wenn sie mit den falschen Parametern aufgerufen werden.
- Programmabschnitte einrücken und die Zeilenlänge begrenzen, so daß der Code lesbar bleibt.
Lesbarkeit des Programms:
Die Lesbarkeit des Programmcodes ist der nächste Punkt auf der Prioritätsliste bei der Programmierung. Die wesentlichste Punkt ist das Einrücken von geschachtelten Anweisungen und die Minimierung der Zeilenlänge.
Code: Alles auswählen
For x = 0 To 640
For y = 0 To 480
Plot(x, y)
Next y
Next x
Viel Spaß beim programmieren, wünscht Euch
Thorsten Will aka va!n
Tutorial (c) by Thorsten Will aka va!n
All rights reserved.