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 perltidy
18 laufen lassen. Damit werden einige der nachfolgenden Regeln automatisch
19 befolgt, andere hingegen nicht. Dort, wo keine perltidy-Optionen angegeben
20 sind, muss der Programmierer selbst für die Einhaltung sorgen.
22 --------------------------------------------------------------------------
24 1. Es werden keine "echten" TAB-Zeichen sondern Leerzeichen verwendet.
27 2. Die Einrückung beträgt zwei Leerzeichen.
32 print(STDERR "Debugging.\n");
35 3. Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie
37 Perltidy: -nbl -nsbl -bar
46 if ($form->{item_rows} > 0) {
50 4. Schließende geschweifte Klammern sind so weit eingerückt wie der Befehl/
51 die öffnende schließende Klammer, die den Block gestartet hat, und nicht
52 auf der Ebene des Inhalts. Die gleichen Beispiele wie bei 3. gelten.
53 Perltidy: macht's automatisch
55 5. Die Wörter "else" "elsif", "while" befinden sich auf der gleichen
56 Zeile wie schließende geschweifte Klammern.
60 if ($form->{"sum"} > 1000) {
62 } elsif ($form->{"sum"} > 0) {
72 6. Parameter von Funktionsaufrufen müssen mit runden Klammern versehen
75 Achtung: perltidy kann dieses nicht erledigen. Der Programmierer muss
80 debug("Konnte Datei nicht oeffnen.\n");
82 7. Verschiedene Klammern
84 7.1 Aufeinander folgende runde Klammern sollten nicht durch Leerzeichen
89 if (($form->{"debug"} == 1) && (($form->{"sum"} - 100) < 0)) {
93 7.2 Nach und vor eckigen Klammern sollten keine Leerzeichen stehen.
99 7.3 Nach und vor geschweiften Klammern sollten keine Leerzeichen stehen,
100 es sei denn, sie sind verschachtelt.
103 $form->{"sum"} += $form->{"row_${i}"};
105 $form->{ $form->{"index"} } += 1;
107 7.4 Nach und vor geschweiften Klammern, die Codeblöcke beschränken,
108 sollten Leerzeichen stehen, wenn sich der Codeblock über nur eine
113 map({ $form->{"sum"} += $form->{"row_$_"}; } (1..$rowcount));
114 $form->{ $row + 1 } = 5;
116 8. Mehrzeilige Befehle
118 8.1 Werden die Parameter eines Funktionsaufrufes auf mehrere Zeilen
119 aufgeteilt, so müssen diese bis zu der Spalte eingerückt werden,
120 in der die ersten Funktionsparameter in der ersten Zeile stehen.
121 Perltidy: -lp -vt=1 -vtc=1
124 $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
125 $form->{"some_col_value"});
127 8.2 Wird ein Befehl auf einer neuen Zeile forgesetzt, so ist ab der
128 zweiten Zeile zusätzlich zwei Leerzeichen einzurücken.
133 $form->{"row_$i"} ? $i : $form->{"rowcount"} - $form->{"rowbase"};
137 9.1 Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der
138 Code eingerückt sein.
141 9.2 Seitliche hängende Kommentare sollten einheitlich formatiert werden.
144 10. Hash-Keys sind, sofern es sich um Zeichenketten und nicht um
145 Nummern handelt, in Anführungszeichen zu setzen.
147 Achtung: perltidy kann dieses nicht erledigen. Der Programmierer muss
148 selber darauf achten!
153 $form->{"row_$i"} = $form->{"row_$i"} - 5;
156 11. Die Maximale Zeilenlänge ist nicht bescränkt. Zeilenlängen <= 79
157 helfen, weil sie dann im Textmodus / per SSH deutlich besser lesbar
158 sind. Oft genug ist es aber nicht möglich oder nur unter großen
159 Verrenkungen, diese Vorgabe einzuhalten.
161 Zeilen sollten nicht länger als 79 Zeichen sein.
164 --------------------------------------------------------------------------
166 Vollständige Liste aller Optionen, die ich für perltidy benutze. Diese
167 können in ~/.perltidyrc geschrieben werden: