4 Die folgenden Regeln haben das Ziel, den Code möglichst gut les- und wartbar
5 zu machen. Dazu gehört zum Einen, dass der Code einheitlich eingerückt ist,
6 aber auch, dass Mehrdeutigkeit so weit es geht vermieden wird (Stichworte
7 "Klammern" oder "Hash-Keys").
9 Diese Regeln sind keine Schikane, sondern erleichtern allen das Leben!
11 Zum einfachen Formartieren von Perl-Scripten gibt es das Tool "perltidy",
12 das man weitgehend konfigurieren kann. Bei fast allen nachfolgenden Punkten
13 sind die dazugehörigen perltidy-Optionen angegeben. perltidy ist bei den
14 meisten Linux-Distributionen enthalten und kann ansonten unter
15 http://perltidy.sourceforge.net heruntergeladen werden.
17 Jeder, der einen Patch schickt, sollte sein Script vorher durch
18 perltidy laufen lassen -- und seine Veränderung danach noch einmal
19 kurz testen! Damit werden einige der nachfolgenden Regeln automatisch
20 befolgt, andere hingegen nicht. Dort, wo keine perltidy-Optionen
21 angegeben sind, muss der Programmierer selbst für die Einhaltung
27 1. Alle Variablen müssen in dem Block, in dem sie benutzt werden mit
28 "my $variable;" oder mit "local *FILEHANDLE;" deklariert werden.
29 Neue globale Variablen einzuführen ist nicht erlaubt!
33 2.1 Alle Variablennamen müssen sinnvoll sein. "$i" als Schleifenzähler zu
34 nehmen ist in Ordnung. Sobald es aber über einen trivialen Fall
35 hinausgeht ist der Variable ein Name zu geben, der den Inhalt wieder-
36 spiegelt. Beispielsweise "$rowcount" für die Anzahl der Zeilen/
37 Positionen in einer Rechnung oder "$net_price" für den Nettopreis.
39 2.2 Variablen, die einfach den Inhalt einer Datenbankspalte beeinhalten,
40 sollten so benannt werden, wie die Datenbankspalte ebenfalls heißt.
42 2.3 Variablennamen sollten in Englisch gehalten sein, weil der Rest
43 des Programms ebenfalls in Englisch gehalten ist. Für Begriffe,
44 für die es keine englischen Entsprechungen gibt, sind deutsche
45 Variablennamen in Ordnung.
47 3. Die Schreibweise von Variablen sollte komplett klein ein. Zusammengesetzte
48 Namen sollten mit Unterstrichen getrennt werden. Beispiel: "$net_price".
52 4.1 Kommentare beziehen sich immer auf Code in der gleichen Zeile, wenn
53 der Kommentar am rechten Rand steht, oder auf den nachfolgen Code.
55 4.2 Codeteile, deren Funktion nicht auf den ersten Blick ersichtlich ist,
56 sollten kommentiert werden. Der Kommentar sollte kurz beschreiben,
57 was der Codeteil macht, eventuelle Nebenwirkungen oder Probleme
60 4.3 Kommentare der Art, dass Benutzer X am Datum Y den Teil Z geändert
61 hat, sind nicht notwendig. Dafür gibt es die SVN-Commit-Nachrichten,
62 die all diese Informationen enthalten bzw. enthalten müssen.
64 4.4 Funktionen sollten kommentiert werden. Dazu wird vor der Funktion
65 ein Kommentarblock erstellt, der beschreibt, was diese Funktion
66 tut. Zusätzlich sollte aufgezählt werden, welche Parameter die
67 Funktion erwartet und welche Bedeutung diese haben. Der Rückgabewert
68 ist ebenfalls zu dokumentieren.
70 5. Alle Texte/Begriffe, die ausgegeben werden, müssen mit
71 $text->locale('Begriff'); ausgegeben werden, damit diese Begriffe
72 übersetzt werden können. Das betrifft aber nur Begriffe, die einzeln
73 übersetzbar sind, natürlich nicht für z.B. HTML-Code.
75 6. Änderungen in den Kernbestandteilen von Lx-Office, die nur der Anbindung
76 von Modulen dienen, die wiederum nicht Bestandteil der offiziellen
77 Distribution sind, müssen durch eine Konfigurationsvariable abschaltbar
78 sein. Damit soll verhindert werden, dass solcher Code ausgeführt wird,
79 wenn das Modul nicht installiert ist, da dieser Code ausschließlich von
80 den Programmierern dieses Moduls getestet werden kann.
86 (B) "Optik" -- Sachen, die die Form betreffen
87 =============================================
89 1. Es werden keine "echten" TAB-Zeichen sondern Leerzeichen verwendet.
92 2. Die Einrückung beträgt zwei Leerzeichen.
97 print(STDERR "Debugging.\n");
100 3. Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie
102 Perltidy: -nbl -nsbl -bar
111 if ($form->{"path"} eq "bin/mozilla") {
115 4. Schließende geschweifte Klammern sind so weit eingerückt wie der Befehl/
116 die öffnende schließende Klammer, die den Block gestartet hat, und nicht
117 auf der Ebene des Inhalts. Die gleichen Beispiele wie bei 3. gelten.
118 Perltidy: macht's automatisch
120 5. Die Wörter "else" "elsif", "while" befinden sich auf der gleichen
121 Zeile wie schließende geschweifte Klammern.
125 if ($form->{"sum"} > 1000) {
127 } elsif ($form->{"sum"} > 0) {
137 6. Parameter von Funktionsaufrufen müssen mit runden Klammern versehen
140 Achtung: perltidy kann dieses nicht erledigen. Der Programmierer muss
141 selber darauf achten!
145 debug("Konnte Datei nicht oeffnen.\n");
147 7. Verschiedene Klammern
149 7.1 Aufeinander folgende runde Klammern sollten nicht durch Leerzeichen
154 if (($form->{"debug"} == 1) && (($form->{"sum"} - 100) < 0)) {
158 7.2 Nach und vor eckigen Klammern sollten keine Leerzeichen stehen.
164 7.3 Nach und vor geschweiften Klammern sollten keine Leerzeichen stehen,
165 es sei denn, sie sind verschachtelt.
168 $form->{"sum"} += $form->{"row_${i}"};
170 $form->{ $form->{"index"} } += 1;
172 7.4 Nach und vor geschweiften Klammern, die Codeblöcke beschränken,
173 sollten Leerzeichen stehen, wenn sich der Codeblock über nur eine
178 map({ $form->{"sum"} += $form->{"row_$_"}; } (1..$rowcount));
179 $form->{ $row + 1 } = 5;
181 8. Mehrzeilige Befehle
183 8.1 Werden die Parameter eines Funktionsaufrufes auf mehrere Zeilen
184 aufgeteilt, so müssen diese bis zu der Spalte eingerückt werden,
185 in der die ersten Funktionsparameter in der ersten Zeile stehen.
186 Perltidy: -lp -vt=1 -vtc=1
189 $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
190 $form->{"some_col_value"});
192 8.2 Wird ein Befehl auf einer neuen Zeile forgesetzt, so ist ab der
193 zweiten Zeile zusätzlich zwei Leerzeichen einzurücken.
198 $form->{"row_$i"} ? $i : $form->{"rowcount"} - $form->{"rowbase"};
202 9.1 Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der
203 Code eingerückt sein.
206 9.2 Seitliche hängende Kommentare sollten einheitlich formatiert werden.
209 10. Hash-Keys sind, sofern es sich um Zeichenketten und nicht um
210 Nummern handelt, in Anführungszeichen zu setzen.
212 Achtung: perltidy kann dieses nicht erledigen. Der Programmierer muss
213 selber darauf achten!
218 $form->{"row_$i"} = $form->{"row_$i"} - 5;
221 11. Die Maximale Zeilenlänge ist nicht beschränkt. Zeilenlängen <= 79
222 helfen, weil sie dann im Textmodus / per SSH deutlich besser lesbar
223 sind. Oft genug ist es aber nicht möglich oder nur unter großen
224 Verrenkungen, diese Vorgabe einzuhalten.
226 Zeilen sollten nicht länger als 79 Zeichen sein.
232 (C) Liste der perltidy-Optionen
233 ===============================
235 Vollständige Liste aller Optionen, die ich für perltidy benutze. Diese
236 können in ~/.perltidyrc geschrieben werden: