Was bringt mir das Code Refactoring?

Eine der größten Entwicklungen zum Beispiel in der Automotive-Industrie war der Entwicklung der Baukasten-Systeme, bzw. Modularer Plattformen. Hierzu wurden alle Komponenten der Produktpalette unter die Lupe genommen und geschaut, wie man diese so gestalten kann, dass sie möglichst vielfältig eingesetzt werden. Das gipfelte nun darin, dass die Vorderachse bei einigen Herstellern von der Kompaktklasse, über die SUVs bis hin zu kleinen Lieferwagen in 8 verschiedenen Modellen zum Einsatz kommt. Gibt es nun große Weiterentwicklungen an dieser Komponente profitieren direkt 8 Modelle davon.

Ich denke, ihr merkt, wo ich hin möchte?
Häufig entsteht Software daraus, dass ein Entwickler auf dem weißen Stück Papier anfängt und los schreibt. Es werden Funktionen ergänzt, Code kopiert und Ausgaben an verschiedenen Stellen eingesetzt. Einige Tausend Zeilen Code später
ist der Spaghetti-Knoten dann perfekt. Jede Änderung birgt nun die Gefahr, dass sie den Code an anderer Stelle zum Einsturz bringt. Die Qualität der Software ist somit stark gefährdet und die Wartbarkeit nicht mehr gegeben.
Code Refactoring ist nun also der Umbau
dieses Legacy Codes in den Modularen Baukasten der Automobilindustrie hier bei uns in der Software-Qualitätssicherung und der Software-Entwicklung.

Was machen wir nun bei Code Refactoring?

Zu erst einmal muss man sich den gesamten Code einmal anschauen und überlegen, in welche Funktionseinheiten man ihn unterteilen kann. Dann fängt man an Nudel für Nudel aus dem Knoten herauszuziehen. Diese herausgelöste Funktionalität kann nun als eigene Komponente separat gepflegt und bei Bedarf immer wieder aufgerufen werden.
Wenn man mit der ersten Runde fertig ist, geht es in die nächste Runde. Hierbei schaut man sich die einzelnen Funktionseinheiten an und schaut, ob es sinnvoll ist diese weiter herunter zu brechen, in noch kleiner Einheiten. Vielleicht habe ich ja in zwei Einheiten eine Funktion, die ich an beiden Stellen verwenden möchte?
Am Ende ist der gesamte Code soweit herunter gebrochen, dass ich viele einzigartige Funktionen und Komponenten als eigene Einheit vorliegen habe. Wenn ich nun eine eingeführte Variable ändern möchte, brauche ich dies NUR EINMAL zu machen.

Durch die Modularität erhöht sich ganz nebenbei die Testbarkeit, denn ich kann die Komponenten losgelöst mit Unittests versehen. Der Software-Test beginnt schon während der Entwicklung und Bugs fallen schneller auf.
Bei Erweiterungen des Funktionsumfangs brauchen wir nicht mehr durch den gesamten Code zu wandern und zu schauen, an welchen Stellen ich die neue Funktionalität mit einbinden muss. Vielleicht lässt sich die eine oder andere Komponente ja auch in einem anderen Projekt verwenden?

Round-up

Unter dem Strich bekommen wir durch Code Refactoring also,
bessere Wartbarkeit für alle beteiligten und Nachfolger
mehr Übersicht, auch für Neueinsteiger im Projekt
Modularität die Zeit spart bei neuen Projekten
– Erhöhung der Zukunftssicherheit
Zeitersparnis bei der (Weiter-)Entwicklung
– Vereinfachung beim Software-Testing

Um es einmal plakativ zu sagen – und mit einem Augenzwickern: Coding as easy as Lego!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.