================== C/C++ Coding Style ================== Hier sammeln wir nach und nach Regeln für unseren gemeinsamen Coding Style. Durch einen einheitlich Programmierstil wird der Programmcode für alle lesbarer und wartbarer. Regel ===== Das Erstellen eines Coding Styles ist *kein* demokratischer Prozess. Regel ===== Das Erstellen eines Coding Styles ist *kein* demokratischer Prozess. Regel ===== Es gibt keinen Fight Club. Regel: Zeilenlänge, Einrücktiefe, Tabs ====================================== - Keine Zeile ist länger als 80 Zeichen. - Keine harten Tabs. Ein Tab wird durch 4 Leerzeichen ersetzt. - Einrücktiefe ist 4. Regel: Blöcke ============= - Es werden stehts `{...}`-Blöcke benutzt. Auch bei einzeiligen `if`, `while`, usw. Anweisungen. Also stets ---- CODE(type=cc) ---- if (i>0) { return true; } ----------------------- Und nie ---- CODE(type=cc) ---- if (i>0) return true; ----------------------- - Bei einer Funktion beginnt der Block in einer neuen Zeile: ---- CODE(type=cc) ---- void dummy() { // .... } ----------------------- - Bei Schleife oder bedingten Anweisungen beginnt der Block mit der Schleife oder der Bedingung: ---- CODE(type=cc) ---- for (i=0; i<10; ++i) { if (i>0) { return true; } } ----------------------- - Falls eine Zeile zu Lang werden würde (siehe oben) darf man Bedingungen umbrechen: ---- CODE(type=cc) ---- if ((someVeryLongVariable >= anotherLongVariable + 100) || (someVeryVeryVeryLongVariable <= anotherVeryVeryLongVariable)) { return true; } ----------------------- Regel: Schreibweise von Variablen, Konstanten und Macros ======================================================== - Variabel Namen schreibt man klein, z.B. `i`, `j`, ... nicht `I`, `J`, ... - Zusammengesetzte Namen von Variablen beginnen klein, jedes weitere Wort wird mit Großbuchstaben angefügt, z.B. `numRows` (nicht `num_rows`). - Konstanten beginnen mit einem Großbuchstaben, z.B. `Pi`, ... - Macros bestehen nur aus Großbuchstaben und haben mindestens zwei Zeichen. *Achtung:* Unterschied von Konstanten in C und C++ beachten. Regel: Inkrement ================ - Falls ein Postinkrement `i++` den gleichen Effekt wie ein Preinkrement `++i` hat, dann wird das Preinkrement bevorzugt. - Bei einem Inkrement ungleich `1` wird `+=` bzw. `-=` benutzt. Also `i+=2` statt `i = i + 2`. Regel: Pointer Definition/Deklaration ===================================== Der Stern steht bei der Variable. Das ist insbesondere dann wichtig, wenn die Definition von Pointern und Variablen gemischt wird. Also --- CODE(type=cc) ------------------- double *p, x; ------------------------------------- Und nicht --- CODE(type=cc) ------------------- double* p, x; ------------------------------------- Denn in beiden Fällen ist `p` ein Pointer und `x` nicht. Regel: Keine Leerzeichen am Zeilenende ====================================== Keine Leerzeichen unmittelbar vor dem Zeilenumbruch (keine 'Trailing Spaces').