Frank PientkaAllgemein

Schritte zu wartbarem Code

Leider ist es bei Software nicht so, dass sie wie guter Wein mit der Zeit immer besser wird. Genau das Gegenteil ist oft der Fall. Sie ist nicht zeitlos.

Software, die nicht regelmäßig gewartet wird, ist bald wertlos oder eine schlummernde Zeitbombe. Alle fünf bis sieben Jahre verdoppelt sich weltweit die erstellte Codemenge. Das betrifft nicht nur den selbst erstellten Code, sondern auch die dabei verwendeten Software-Produkte.

Als Linux vor 25 Jahren von einem Entwickler mit 100.000 Zeilen Code begonnen wurde, war noch nicht daran zu denken, dass diese jetzt auf einer undurchschaubaren Anzahl von Plattformen läuft. Die aktuelle Codegröße allein für den Linux-Kernel beträgt inzwischen weit über 21 Millionen Zeilen Code.

Doch auch die verwendeten Programmiersprachen haben im Umfang zugenommen. War es am Anfang von Java noch möglich, alle Klassen und deren Methoden zu kennen, so ist es mit einem einfachen Texteditor und Kommandozeile inzwischen nicht mehr möglich, eine komplexere Java-Anwendung zu schreiben. Ohne eine gute Werkzeugunterstützung ist das Entwicklergehirn heute mehr als früher überfordert, die Auswirkungen von Codeänderungen zu überblicken.

Und doch muss gerade bei verteilten Systemen der Datenfluss verstanden werden, um Fehlersituationen nachstellen zu können. Hier ist ja schon mal gut, wenn durch den verstärken Einsatz von Open Source der Quellcode vorliegt. Er hilft jedoch nur weiter, wenn er nach festen Regeln und Strukturen aufgebaut ist. Diese sollen die Lesbarkeit, Verständlichkeit und Testbarkeit unterstützen. Entwickler verwenden heute mehr fremden Code oder müssen diesen verstehen oder als eigenen schreiben.

Deshalb ist es wichtig, schon beim Erstellen der ersten Codezeile an später zu denken. Warum sollte man es nicht direkt richtig machen? Denn man erhält später selten die Zeit, es besser zu machen. Eine der größten Wartungssünden ist toter und doppelter Code (Don’t on’t Repeat Yourself). Gleiches gilt für ungenutzte Fremdbibliotheken.

Hier helfen Analyse-Werkzeuge, solche Stellen zu erkennen und diese zu beseitigen. Schwieriger wird es bei größeren Systemen mit den Abhängigkeiten. Diese lassen sich zwar relativ einfach visualisieren. Da sie jedoch für den normalen Entwickler die meiste Zeit fast unsichtbar sind, bedarf es immer extra Kontroll- und Überprüfschritte.

Erstaunlicherweise ist die Menge der Bücher und Artikel über neue Programmiersprachen und Frameworks größer als die recht überschaubare Menge über guten Programmierstil und wartbarer Software. Letztlich wird viel zu selten bei einer Stellenausschreibung eine Programmierprobe verlangt, sondern eher Projektreferenzen und Programmierzertifikate.

Trotzdem lohnt es sich, Bücher wie „Effektives Arbeiten mit Legacy Code“ von Michael Feathers oder „Clean Coder: Verhaltensregeln für professionelle Programmierer“ von Robert C. Martin aus derselben Serie zu lesen. Ebenso ist der Klassiker „Refactoring: Improving the Design of Existing Code“zur Verbesserung der Codestruktur von Martin Fowler und Kent Beck zu nennen. Ein Buch, das für die über 20 Jahre alte Programmiersprache Java (Das Cobol des 21. Jahrhunderts) zehn Regeln für wartbaren Code beschreibt, ist „Building Maintainable Software: Ten Guidelines for Future-Proof Code“ vom Autorenkollektiv Joost Visser, Sylvan Rigal, Rob van der Leek, Pascal van Eck und Gijs Wijnholds. Die Regeln klingen einleuchtend, haben es jedoch in sich, da einfaches oft nicht einfach umzusetzen ist. Dennoch sollte sie jeder Programmierer kennen und des Öfteren beherzigen.

Mit den folgenden zehn Regeln wäre schon viel gewonnen, selbst, wenn es nur die Diskussion über eine bessere Codekultur anregt:

  • Write short units of code
  • Write simple units of code
  • Write code once
  • Keep unit interfaces small
  • Separate concerns in modules
  • Couple architecture components loosely
  • Keep architecture components balanced
  • Keep your codebase small
  • Automate development pipeline and tests
  • Write clean Code

Über ein Jahrzehnt nach Erscheinen dieser Bücher hat das Thema nichts von seiner Brisanz und Aktualität verloren. Sowohl junge Entwickler als auch alte Hasen können viel dazu beitragen, dass ihr erstellter Code auch für zukünftige Generationen von Programmierern noch nutzbar ist und bleibt. Dies ist eine große, aber lohnende Aufgabe, die mehr Aufmerksamkeit von allen Seiten bedarf. Gerade, weil Software, frei nach dem Essay „Why Software is Eating the World“ von Marc Andreessen, die gesamte Wirtschaft heute am Laufen und uns am Leben hält!

Schlagwörter: