Code Conventions

80% der Lebenszykluskosten von Software entfallen auf Wartung. Keine Software wird von nur einem Entwickler betreut. Deswegen ist es entscheidend, dass der Code in einer gut verständlichen und nachvollziehbaren Art und Weise geschrieben ist. Code Conventions helfen, dabei das zu erreichen.

Was sind Code Conventions?

Code Conventions sind Richtlinien über die strukturelle Qualität von Software. Sie umfassen allgemeine Programmierstandards sowie „Best Practices“ und programmiersprachen spezifische Aspekte. Durch das Befolgen dieser Richtlinien kann die Les- und Nachvollziehbarkeit des Source Codes verbessert werden. Dadurch wird es einfacher, die Software zu warten. Normalerweise umfassen Code Conventions folgende Bereiche: Dateiorganisation, Einrückung, Kommentierung, Deklarationen, Statements, Leerzeichen, Namenskonventionen, Programmierstandards, Programmierprinzipien und architektonische Best Practices.

Wenn du die Code Conventions einer Programmiersprache liest, fragst du dich vielleicht: „Warum schreiben die das auf? Das ist doch offensichtlich! Das weiß doch jeder!“ Wenn du aber in einem Team zusammen arbeitest, ist es unerlässlich sich an gemeinsame Regeln zu halten und kleine Unterschiede zu beseitigen.

Wie lege ich Code Conventions fest?

Ein guter Weg, um mit Code Conventions zu starten ist es bereits existierende zu nehmen und diese den eigenen Bedürfnissen anzupassen. Wenn du z.B. deine Code Conventions für Java festlegen möchtest, kannst du mit denen von Sun Microsystems oder den Google Java Styleguide beginnen. Genau das haben wir gemacht. Einige der Richtlinien haben wir 1:1 übernommen, andere haben wir unseren Bedürfnissen angepasst. Natürlich kann man die Richtlinien auch erweitern.

Dies sind einige der Richtlinien und unsere Anpassungen:

ThemaGoogle/Sun(Oracle) VarianteUnsere Variante
Variable Assignment (unchanged)Avoid assigning several variables to the same value in a single statement. It is hard to read. Do not use the assignment operator in a place, where it can be easily confused with the equality operator. Do not use embedded assignments in an attempt to improve run-time performance. This is the job of the compiler. Example: d = ( a = b + c ) + r; //AVOID! //should be written as a = b + c; d = a + r;Avoid assigning several variables to the same value in a single statement. It is hard to read. Do not use the assignment operator in a place, where it can be easily confused with the equality operator. Do not use embedded assignments in an attempt to improve run-time performance. This is the job of the compiler. Example: d = ( a = b + c ) + r; //AVOID! //should be written as a = b + c; d = a + r;
Providing Access to Instance and Class Variables (slightly changed)Don't make any instance or class variable public without good reason. Often, instance variables don't need to be explicitly set or gotten - often that happens as a side effect of method calls.Never make any instance or class variable public. Often, instance variables don't need to be explicitly set or gotten - often that happens as a side effect of method calls.
Line Lengh (changed)Avoid lines longer than 80 characters, since they're not handled well by many terminals and tools.Avoid lines longer than 120 characters. Exceptions:
  • Lines where obeying the column limit is not possible (e.g. a long URL in Javadoc, or a long JSNI method reference).
  • package and import statements.
  • Command lines in a comment that may be copied-and-pasted into a shell.
Language (new)Everything (source code, comments, variables, object names, ...) is written in English.

Zum Start solltest du alles aufschreiben, was die Zusammenarbeit deines Teams verbessern kann. Wenn ihr mal über etwas diskutiert und euch dann auf eine Lösung einigt, könnt ihr diese in eure Code Conventions aufnehmen um zukünftige Diskussionen zu vermeiden. Seht sie aber nicht als „in Stein gemeißelt“ an, denn vielleicht ändern sich Rahmenbedingungen oder ihr entwickelt euch einfach weiter. Natürlich solltet ihr eure Richtlinien nicht täglich ändern, da dann niemals Routine aufkommt und das zu Verwirrung führt.

Eine gute Möglichkeit um Code Conventions in den Alltag aufzunehmen ist durch Code Reviews oder durch statische Code Analysen mit Checkstyle (für Java) oder SonarQube.

Tipp: Code Conventions sollten nicht von nur einer Person verfasst werden. Um eine hohe Akzeptanz im Team zu erreichen sollten sie durch eine Gruppe diskutiert werden.

Fazit

Code Conventions helfen dabei Code zu schreiben, der einfacher von Anderen gewartet und erweitert werden kann.
Das wichtigste an Code Conventions ist, sich an sie zu halten. Durch statische Code Reviews kann die Einhaltung von Richtlinien überprüft werden. Manuelle Reviews haben den Vorteil, dass zum einen der Entwickler Feedback zu seinem Code bekommt und zum anderen der „Rewiewer“ die Richtlinien weiter verinnerlicht, da er ihre Einhaltung überprüfen muss. Natürlich dauert es einige Zeit, bis jeder die Code Conventions verinnerlicht hat, aber auf lange Sicht helfen sie dabei, besser lesbaren Code zu schreiben.

 

Dieser Beitrag wurde ursprünglich in unserem Partnerblog vom SCM-Manager Universe Team veröffentlicht.

Diesen Beitrag teilen

Daniel Huchthausen
Consultant
Wenn er nicht gerade die Wildnis erkundet, beschäftigt sich Daniel mit Themen wie Qualitätssicherung, Testen oder PM-Methoden.