Software

Wiederverwendung von Code – Der heilige Gral der Softwareentwicklung

Code nicht neu schreiben. Auf keinen Fall! Wiederverwendung über alles. Das Rad nicht neu erfinden. Unantastbar wie der 1. Hauptsatz der Thermodynamik steht dieser Grundgedanke der Softwareentwicklung über allen anderen. Und das nicht erst seit die objektorientierten Programmiersprachen ihren Siegeszug antraten. Ihn in Frage zu stellen ist schon Blasphemie. Der Grund dafür ist letztlich der Gedanke, dass eine gute Problemlösung in Form von Code natürlich nicht wieder und wieder neu gefunden werden soll. Eine gute Implementierung verwendet man gerne wieder, denn sie ist ja gut. Vermeidung von Redundanz! Eine neue Implementierung bringt keine Vorteile sondern stattdessen mindestens den Nachteil, zusätzlichen Code darzustellen, der auch gewartet werden muss. Gute Implementierungen bündelt man in Software-Bibliotheken, zusammen mit einer guten Dokumentation, und ermöglicht so die einfache Wiederverwendung.

Viele Regeln haben ihre Berechtigung, jeder, der sie beachtet, sollte aber ihre Randbedingungen kennen und beachten. Die Regel zur Wiederwendung hat eine wichtige Randbedingung, die leider nicht explizit in der Regel selbst enthalten ist: Verwende Code nur dann wieder, wenn er auch wirklich wiederverwendet werden kann. Eine Binsenweisheit sollte man denken. Trotzdem liegt hier meist das größte Problem: Der Code wird wiederverwendet, obwohl er eigentlich für das Problem nicht gedacht war. Einfache Tests weisen darauf aber nicht hin und auch die Dokumentation ist oft keine Hilfe. Code wird dann entsprechend wiederverwendet obwohl er nicht das leistet, was erwartet wird. Eine andere Variante der Wiederwendung besteht darin, bestehenden Code zu erweitern, um nicht nur das ursprüngliche Problem zu lösen, sondern auch das aktuelle Problem, welches vermeintlich nahe damit verwandt ist. So wächst eine Funktion, die für eine bestimmte Aufgabe gedacht war, immer mehr an, bis sie schließlich tatsächlich viele verschiedene Probleme löst. Oder eben nicht. Eine wichtige Designrichtlinie ist nämlich völlig zurecht, dass eine Funktion genau eine Aufgabe lösen sollte, und nur eine. Diese Aufgabe soll bei gültigen Eingabeparametern mit einem völlig korrekten Ergebnis gelöst werden und bei ungültigen Eingaben soll die Funktion mit einem Fehler abbrechen und sich so verhalten, als ob sie nie aufgerufen worden wäre.

Dies sind zwei vermeintlich offensichtliche Probleme bei blinder Code-Wiederverwendung. Etwas subtiler ist das Thema Abhängigkeiten: Benutzt Code eine Bibliothek A, so muss ggf. nicht nur dieser Teil des Programms neu veröffentlicht werden sondern ggf. auch die neue Version der Bibliothek A.

Last, but not least, bedeutet gemeinsamer Code ggf. auch ein gemeinsames Datenmodell zu haben und dieses Modell kann dann aufgrund der gemeinsamen Nutzung nicht leicht geändert werden.

Wiederverwendung von Code hat auch Nachteile und diese sollte man nicht unterschätzen!

Kategorien:Software