Cloudogu Logo

Hallo, wir sind Cloudogu!

Experten für Software-Lifecycle-Management und Prozess­auto­mati­sierung, Förderer von Open-Source-Soft­ware und Entwickler des Cloudogu EcoSystem.

featured image Codekonventionen
06.12.2023 in Methods

Codekonventionen


Daniel Huchthausen
Daniel Huchthausen

IT Consultant


Inhaltsverzeichnis

80 % der Lebensdauerkosten für Software entfallen auf die Wartung, und kaum eine Software wird während ihrer gesamten Lebensdauer vom ursprünglichen Autor gewartet. Daher ist es von entscheidender Bedeutung, dass der Code in einer verständlichen Weise geschrieben ist. Codekonventionen helfen, dies zu erreichen.

Was sind Codekonventionen?

Codekonventionen sind Richtlinien für die strukturelle Qualität von Software. Sie sind eine Reihe von programmierspezifischen Standards, Praktiken und Methoden für jeden Aspekt des in einer Sprache geschriebenen Codes. Die Einhaltung dieser Richtlinien trägt dazu bei, die Lesbarkeit des Quellcodes zu verbessern, was die Wartung der Software erleichtert. In der Regel decken Codekonventionen folgende Bereiche ab:

  • Dateiorganisation,
  • Einrückung,
  • Kommentare,
  • Deklarationen,
  • Anweisungen,
  • Leerraum,
  • Benennungskonventionen,
  • Programmierpraktiken,
  • Programmierprinzipien,
  • Faustregeln für die Programmierung und bewährte Architekturpraktiken.

Codekonventionen

Wenn Sie die Codekonventionen einer Programmiersprache lesen, denken Sie vielleicht: “Warum sollten die das aufschreiben, das ist doch klar, das weiß doch jeder!”. Aber wenn man in einem Team arbeitet, ist es wichtig, dass man sich an gemeinsame Regeln hält und kleine Unterschiede ausräumt.

Wie legt man Codekonventionen fest?

Ein guter Weg, um mit eigenen Codekonventionen zu beginnen, ist es, bestehende Konventionen zu übernehmen und sie an die eigenen Bedürfnisse anzupassen. Wenn Sie Codekonventionen für Java festlegen möchten, können Sie beispielsweise mit den  Konventionen von Sun Microsystems oder dem Google Java Styleguide beginnen. Genau das haben wir getan. Wir haben diese Dokumente als Grundlage verwendet. Einige der Richtlinien haben wir unverändert übernommen, einige haben wir ein wenig modifiziert und einige haben wir entsprechend unseren Anforderungen geändert. Natürlich können Sie auch neue Themen mit Richtlinien hinzufügen.

Die folgende Tabelle zeigt Ihnen einige der Leitlinien und unsere Änderungen.

Thema Leitlinie Google/Sun(Oracle) Unsere Leitlinie
Zuweisung von Variablen (unverändert) Vermeide es, mehreren Variablen in einer einzigen Anweisung denselben Wert zuzuweisen. Verwende den Zuweisungsoperator nicht an einer Stelle, an der er leicht mit dem Gleichheitsoperator verwechselt werden kann. Verwende keine eingebetteten Zuweisungen, um die Laufzeitleistung zu verbessern. Dies ist die Aufgabe des Compilers. Beispiel:

d = ( a = b + c ) + r; //VERMEIDEN!
//sollte geschrieben werden als
a = b + c;
d = a + r;
Vermeide es, mehreren Variablen in einer einzigen Anweisung denselben Wert zuzuweisen. Verwende den Zuweisungsoperator nicht an einer Stelle, an der er leicht mit dem Gleichheitsoperator verwechselt werden kann. Verwende keine eingebetteten Zuweisungen, um die Laufzeitleistung zu verbessern. Dies ist die Aufgabe des Compilers. Beispiel:

d = ( a = b + c ) + r; //VERMEIDEN!
//sollte geschrieben werden als
a = b + c;
d = a + r;
Zugriff auf Instanz- und Klassenvariablen (leicht verändert) Mache keine Instanz- oder Klassenvariable ohne guten Grund öffentlich. Oft müssen Instanzvariablen nicht explizit gesetzt oder geholt werden - das geschieht oft als Nebeneffekt von Methodenaufrufen. Mache keine Instanz- oder Klassenvariable ohne guten Grund öffentlich. Oft müssen Instanzvariablen nicht explizit gesetzt oder geholt werden - das geschieht oft als Nebeneffekt von Methodenaufrufen.
Zeilenlänge (geändert) Vermeide Zeilen mit mehr als 80 Zeichen, da diese von vielen Terminals und Tools nicht gut verarbeitet werden können. Vermeide Zeilen mit mehr als 120 Zeichen. Ausnahmen:
  • Zeilen, in denen die Einhaltung der Spaltenbegrenzung nicht möglich ist (z. B. eine lange URL im Javadoc oder ein langer JSNI-Methodenverweis).
  • Paket- und Import-Anweisungen.
  • Befehlszeilen in einem Kommentar, die in eine Shell kopiert und eingefügt werden können.
Sprache (neu) Alles (Quellcode, Kommentare, Variablen, Objektnamen, ...) ist in Englisch geschrieben.

Schreiben Sie alles auf, was die Zusammenarbeit Ihres Teams verbessern könnte, und wenn Sie eine Diskussion über etwas hatten, versuchen Sie herauszufinden, ob es Teil Ihrer Code-Konventionen sein sollte, um weiteren Diskussionen vorzubeugen. Die Codekonventionen sollten nie in Stein gemeißelt sein. (Natürlich sollte man sie auch nicht täglich ändern, denn das führt zu Verwirrung.)

Eine gute Möglichkeit, die Richtlinien in die tägliche Arbeit zu übernehmen, sind Code-Reviews oder automatische Code-Analysen wie Checkstyle für Java oder statische Code-Analysen von SonarQube. Hinweis: Code-Richtlinien sollten nicht von einer Person geschrieben und durchgesetzt werden. Um eine hohe Akzeptanz zu erreichen, sollte eine Gruppe von Entwickelnden die Konventionen diskutieren.

Fazit

Codekonventionen helfen Ihnen, Code zu schreiben, der leichter zu pflegen und von anderen zu erweitern ist, da er auf denselben Richtlinien basiert. Daher ist er für Leute, die den Code noch nie gesehen haben, besser zu verstehen.

Das Wichtigste bei Codekonventionen ist, dass Sie sich an sie halten. Es kann hilfreich sein, automatisierte oder manuelle Code Reviews einzusetzen, um die Richtlinien umzusetzen. Manuelle Überprüfungen haben den Vorteil, dass zum einen der Autor des Codes ein Feedback erhält und zum anderen der Überprüfer überprüfen muss, ob die Richtlinien eingehalten wurden, was auch sein Wissen vertieft. Natürlich dauert es einige Zeit, bis alle die Konventionen übernommen haben.