Refaktorisierung

Softwareentwicklung » Refaktorisierung

Beim Refaktorisieren wird Codedisziplin nachträglich auf vorhandene Software angewendet. Die Funktionalität der Software bleibt dabei unverändert, einzig der interne Aufbau wird verändert.

Beim Refaktorisieren ist es wichtig, schrittweise vorzugehen. Eine Software komplett von 0 aus neu hochzuziehen ist nur in den allerschlimmsten Fällen der Verottung angemessen. Beim schrittweisen Vorgehen hat man zu jedem gegebenen Zeitpunkt eine funktionsfähige Software, die teils aus altem und teils aus neuem Code besteht.

Die nun Dargestellen Schritte stellen einen Auszug der Möglichkeiten dar, die man beim Refaktorisieren nutzen kann:

 

Divide and Conquer

Der erste Schritt beim Refaktorisieren ist oft das Zerteilen zu groß geratener Module in Teilmodule. Hierdurch werden die nachfolgenden Schritte erleichtert, da nicht mehr durch mehrere 1000 Zeilen in einer Datei gescrollt werden muss. Auch zu groß geratene Funktionen werden in sinnvolle Unterfunktionen zerteilt. Das Vorgehen ist vergleichbar mit dem Einsortieren von Werkzeugen aus einem Karton an Nägel in der Wand.

 

Duplizierung

Als nächstes ist der Code auf größere Blöcke zu durchsuchen, die an mehreren Stellen verwendet werden. Der Code aus den Blöcken wird ausgelagert und nur noch aufgerufen. Um den Vergleich oben weiter zu führen: hat man beim Sortieren festgestellt, dass 5 gleich große Kreuzschlitzschraubendreher existieren, kann man 4 verkaufen.

 

Verschlungene Pfade

Nun geht es provisorischen Datenpfaden an den Leib. Nutzen Module A, B und C eine Funktion aus Modul C, die nur in Modul C ist, weil da gerade Platz war, so legt man ein neues Modul D an und verlagert die Funktion dort hin. Direkte Datenzugriffe ersetzt man durch Zugriffsfunktionen.

 

Code- Datengemische

Oft finden sich voluminöse switch-Anweisungen im Code die der Datenverarbeitung dienen. Hier wird eine Tabelle für die Daten erstellt, die dann in einer for-Schleife verarbeitet werden kann.

 

Mißglückte Bezeichner

Nun ist man auf der Detailebene angekommen. Nebulöse Variablen- und Funktionsnamen werden durch aussagekräfige Namen ersetzt.