Clean Coding: Formatierung
Kapitel 5 – Formatierung
Wenn ihr einen Brief bekommt und dieser hat keinerlei Formatierungen, 10 verschiedene Schriftarten und alles ist schief und keinerlei Stil, was denkt ihr euch dann? Ganz klar unprofessionell.
Und genau so verhält es sich mit Code. Mal gibt’s den Modifizier, mal nicht. Mal gibt es drei Leerzeilen, mal gar keine. Eigenschaften, Methoden, Events, … sind kreuz & quer verstreut. All dies behindert die Lesbar- und Wartbarkeit.
Wir sind es gewohnt von oben nach unten und von links nach rechts zu lesen. Es gibt unterschiedliche Ansätze, aber eine Klasse sollte immer gleich aufgebaut sein. Mein Aufbau ist wie folgt (nicht ganz vollständig):
- Private Konstanten
- Felder
- Konstruktor
- Events
- Öffentliche Konstanten
- Eigenschaften
- Öffentliche Methoden
- Private Methoden
Dabei wird der Modifizierer immer explizit angegeben. Methoden, die sinngemäß zusammengehören bzw. abhängige Funktionen sind nicht mit Leerzeilen getrennt, andere schon.
Innerhalb von Methoden wir ebenfalls mit Leerzeilen gearbeitet, um eine Funktion in Blöcke zu unterteilen. Variablen werden dann definiert, wenn sie benötigt werden.
Es gibt nie mehr als eine Leerzeile.
Die Anzahl der Zeichen pro Zeile sollte 80 nicht überschreiten, da die Zeile ansonsten schwer zu lesen wird.
Früher wurden noch oft mehrere Leerzeichen verwendet, um vertikal eine gewisse Linie zu erhalten. Dies wird mittlerweile nicht mehr gemacht und so gilt, dass es auch nie mehr als ein Leerzeichen gibt (dies gilt natürlich nicht für die Einrückungen).
Vor einer „Klammer auf“ wird ein Leerzeichen gemacht, dahinter nicht. Vor einem „Klammer zu“ wird kein Leerzeichen gemacht, danach, falls es noch weitergeht schon.
Bei Einrückungen haben sich zwei Logiken durchgesetzt: 2 oder 4 Leerzeichen (kein Tab).
Ob alle Regeln jetzt genau so verwendet werden, ist nicht entscheidend. Wichtig ist, dass es eine Durchgängigkeit gibt und der Code ein einheitliches Bild erhält.
Und damit belasse ich das Thema „Clean Coding“ vorerst. Im Buch gibt es noch weitere interessante Themen. Eventuell komm ich irgendwann noch auf das Thema „Smells und Heuristics“ und schreibe noch einen separaten Beitrag dazu.