Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4c24a5f4

Von Sven Schöling vor mehr als 14 Jahren hinzugefügt

  • ID 4c24a5f44bf065a820ec1a540334ebd48446ac04
  • Vorgänger 32afa3f4
  • Nachfolger 238d4f5f

Dokumentation komplett nach utf8 konvertiert.

Unterschiede anzeigen:

doc/programmierstilrichtlinien.txt
1 1
Lx-Office Style Guide
2 2
---------------------
3 3

  
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,
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 6
aber auch, dass Mehrdeutigkeit so weit es geht vermieden wird (Stichworte
7 7
"Klammern" oder "Hash-Keys").
8 8

  
9 9
Diese Regeln sind keine Schikane, sondern erleichtern allen das Leben!
10 10

  
11
Jeder, der einen Patch schickt, sollte seinen Code vorher ?berpr?fen.
12
Einige der Regeln lassen sich automatisch ?berpr?fen, andere nicht.
11
Jeder, der einen Patch schickt, sollte seinen Code vorher überprüfen.
12
Einige der Regeln lassen sich automatisch überprüfen, andere nicht.
13 13

  
14 14
--------------------------------------------------------------------------
15 15

  
16 16
1. Es werden keine echten iTabs sondern Leerzeichen verwendet.
17 17

  
18
2. Die Einr?ckung betr?gt zwei Leerzeichen.
18
2. Die Einrückung beträgt zwei Leerzeichen.
19 19
   Beispiel:
20 20

  
21 21
   foreach my $row (@data) {
......
34 34
   }
35 35

  
36 36

  
37
3. ?ffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie
37
3. Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie
38 38
   der letzte Befehl.
39 39
   Beispiele:
40 40

  
......
48 48
     ...
49 49
   }
50 50

  
51
4. Schlie?ende geschweifte Klammern sind so weit einger?ckt wie der Befehl/
52
   die ?ffnende schlie?ende Klammer, die den Block gestartet hat, und nicht
51
4. Schließende geschweifte Klammern sind so weit eingerückt wie der Befehl/
52
   die öffnende schließende Klammer, die den Block gestartet hat, und nicht
53 53
   auf der Ebene des Inhalts. Die gleichen Beispiele wie bei 3. gelten.
54 54

  
55
5. Die W?rter "else" "elsif", "while" befinden sich auf der gleichen
56
   Zeile wie schlie?ende geschweifte Klammern.
55
5. Die Wörter "else" "elsif", "while" befinden sich auf der gleichen
56
   Zeile wie schließende geschweifte Klammern.
57 57
   Beispiele:
58 58

  
59 59
   if ($form->{sum} > 1000) {
......
68 68
     ...
69 69
   } until ($a > 0);
70 70

  
71
6. Parameter von Funktionsaufrufen m?ssen mit runden Klammern versehen
71
6. Parameter von Funktionsaufrufen müssen mit runden Klammern versehen
72 72
   werden. Davon nicht betroffen sind interne perl Funktionen,
73
   und grep ?hnliche Operatoren.
73
   und grep ähnliche Operatoren.
74 74

  
75 75
   Beispiel:
76 76

  
77 77
   $main::lxdebug->message("Could not find file.");
78 78
   %options = map { $_ => 1 } grep { !/^#/ } @config_file;
79 79

  
80
7. Verschiedene Klammern, Ihre Ausdr?cke und Leerzeichen:
80
7. Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:
81 81

  
82 82
  Generell gilt: Hashkeys und Arrayindices sollten _nicht_ durch Leerzeichen
83
  abgesetzt werden. Logische Klammerungen ebensowenig, Bl?cke schon.
83
  abgesetzt werden. Logische Klammerungen ebensowenig, Blöcke schon.
84 84

  
85 85

  
86 86
  Beispiel:
......
98 98
8. Mehrzeilige Befehle
99 99

  
100 100
  8.1 Werden die Parameter eines Funktionsaufrufes auf mehrere Zeilen
101
      aufgeteilt, so sollten diese bis zu der Spalte einger?ckt werden,
101
      aufgeteilt, so sollten diese bis zu der Spalte eingerückt werden,
102 102
      in der die ersten Funktionsparameter in der ersten Zeile stehen.
103 103
      Beispiel:
104 104

  
105 105
      $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
106 106
                           $form->{some_col_value});
107 107

  
108
  8.3 Ein Spezialfall ist der tern?re Oprator "?:", der am besten in einer
109
      ?bersichtlichen Tabellenstruktur organisiert wird.
108
  8.3 Ein Spezialfall ist der ternäre Oprator "?:", der am besten in einer
109
      übersichtlichen Tabellenstruktur organisiert wird.
110 110

  
111 111
      Beispiel:
112 112

  
......
117 117
9. Kommentare
118 118

  
119 119
  9.1 Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der
120
      Code einger?ckt sein.
121
  9.2 Seitliche h?ngende Kommentare sollten einheitlich formatiert werden.
120
      Code eingerückt sein.
121
  9.2 Seitliche hängende Kommentare sollten einheitlich formatiert werden.
122 122

  
123
  9.3 S?mtliche Kommentare und Sonstiges im Quellcode ist bitte auf Englisch
124
      zu verfassen. So wie ich keine Lust habe franz?sischen Quelltext zu lesen,
125
      sollte auch der Lx-Office Quelltext f?r nicht-Deutschsprachige lesbar sein.
123
  9.3 Sämtliche Kommentare und Sonstiges im Quellcode ist bitte auf Englisch
124
      zu verfassen. So wie ich keine Lust habe französischen Quelltext zu lesen,
125
      sollte auch der Lx-Office Quelltext für nicht-Deutschsprachige lesbar sein.
126 126

  
127 127
      Beispiel:
128 128

  
......
139 139
      $i *= $const;  # do something crazy
140 140
      $i = $n;       # recover $i
141 141

  
142
10. Hashkeys sollten nur in Anf?hrungszeichen stehen, wenn die Interpolation
143
    gew?nscht ist.
142
10. Hashkeys sollten nur in Anführungszeichen stehen, wenn die Interpolation
143
    gewünscht ist.
144 144

  
145 145
    Beispiele:
146 146

  
......
148 148
    $form->{"row_$i"} = $form->{"row_$i"} - 5;
149 149
    $some_hash{42}    = 54;
150 150

  
151
11. Die maximale Zeilenl?nge ist nicht bescr?nkt. Zeilenl?ngen <= 79
151
11. Die maximale Zeilenlänge ist nicht bescränkt. Zeilenlängen <= 79
152 152
    helfen unter bestimmten Bedingungen, aber wenn die Lesbarkeit unter
153 153
    kurzen Zeilen leidet (wie zum Biespiel in grossen Tabellen), dann
154 154
    ist Lesbarkeit vorzuziehen.
155 155

  
156
    Als Beispiel sei print_options aus bin/mozilla/io.pl angef?hrt.
156
    Als Beispiel sei print_options aus bin/mozilla/io.pl angeführt.
157 157

  
158
12. Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind unerw?nscht.
159
    Sie f?hren zu unn?tigen Whitespace?nderungen die diffs verf?lschen.
158
12. Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind unerwünscht.
159
    Sie führen zu unnötigen Whitespaceänderungen die diffs verfälschen.
160 160

  
161
    Emacs und vim haben beide recht einfache Methoden daf?r:
161
    Emacs und vim haben beide recht einfache Methoden dafür:
162 162
    emacs kennt das Kommande nuke-trailing-whitespace,
163
    vim macht das gleiche manuell ?ber :%s/\s\+$//e, mit
163
    vim macht das gleiche manuell über :%s/\s\+$//e, mit
164 164
      :au BufWritePre * :%s/\s\+$//e
165 165
    wird das an speichern gebunden.
166 166

  
......
168 168

  
169 169
    In der Vergangenheit wurde versucht perltidy zu verwenden um einen
170 170
    einheitlichen Stil zu erlangen, es hat sich aber gezeigt, dass Perltidys
171
    sehr eigenwilliges Verhaltes was Zeilenumbr?che angeht oftmals gut
172
    formatierten Code zerst?rt. F?r den Interessierten sind hier die perltidy
171
    sehr eigenwilliges Verhaltes was Zeilenumbrüche angeht oftmals gut
172
    formatierten Code zerstört. Für den Interessierten sind hier die perltidy
173 173
    Optionen, die grob den beschriebenen Richtlinien entsprechen.
174 174

  
175 175
  -syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
......
181 181
    Lx-Office bietet mit dem LXDebug Modul einen brauchbaren Trace/Debug
182 182
    Mechanismus, es gibt also keinen Grund nach STDERR zu schreiben.
183 183

  
184
    Die LXDebug Methode "message" nimmt als ersten Paramter au?erdem eine
185
    Flagmaske, f?r die die Meldung angezeigt wird, wobei "0" immer angezeigt
184
    Die LXDebug Methode "message" nimmt als ersten Paramter außerdem eine
185
    Flagmaske, für die die Meldung angezeigt wird, wobei "0" immer angezeigt
186 186
    wird. Sollte Meldungen sollten nicht eingecheckt werden, und werden in den
187
    meisten F?llen auch vom Repository zur?ckgewiesen.
187
    meisten Fällen auch vom Repository zurückgewiesen.
188 188

  
189
14. Alle neuen Module m?ssen use strict verwenden.
189
14. Alle neuen Module müssen use strict verwenden.
190 190

  
191 191
    $form, $auth, $locale, $lxdebug, %myconfig sowie der Inhalt der lx-erp.conf
192 192
    werden derzeit aus dem main package importiert. Alle anderen Konstrukte

Auch abrufbar als: Unified diff