Refactoring

Wer wünscht sie sich nicht, die Qualitätssoftware? Vieles soll sie bieten und leisten, aber vor allem sein. Wiederverwendbar, erweiter- und wartbar zum Beispiel. Natürlich auf Dauer. Und da ist der Haken, denn Software altert. Mit uns, mit jeder neuen Codezeile. Aber es gibt eine Lösung, das Anti-Aging der Softwareentwicklung: Refactoring.

Warum und wie altert Software?

Eine neu entstehende Software zeichnet sich u.a. meistens durch „sauberen“ Entwurf und Code aus. Ihre Struktur lässt in dieser Zeit kaum Wünsche offen.

Im Laufe der Zeit wird neue Funktionalität hinzugefügt und Bestehendes verbessert, Fehler werden behoben. Die Struktur verschlechtert sich, sie beginnt zu zerfallen.

Viele Codezeilen später ist von der ursprünglichen Struktur kaum noch etwas erkennbar. Das interne Durcheinander der Software sorgt bei der Weiterentwicklung für eine steil steigende Aufwandskurve.

Was ist Refactoring?

Refactoring verlangsamt die Alterung von Software, im Idealfall stoppt es sie sogar. Bereits gereifte Software kann mit Refactoring verjüngt werden. Dies geschieht, indem der Code kontinuierlich „aufgeräumt“ wird. Die Struktur wird somit wiederhergestellt oder verbessert, ohne, dass sich das äußere Verhalten der Software (die Funktionalität) ändert. Das Refactoring stellt mit seinem Anti-Aging-Charakter also eine der Königsdisziplinen der Programmierung von Qualitätssoftware dar. Deshalb verwundert es auch nicht, Refactoring als Bestandteil der Testgetriebenen Entwicklung (TDD) sowie des Testgetriebenen Entwurfs (auch TDD) zu finden.

Wann und wie betreibt man Refactoring?

Am besten „refactort“ man direkt, nachdem man neue Funktionalität hinzugefügt oder existierende geändert hat. In sehr kleinen Schritten werden so beispielsweise Redundanzen entfernt, die Verständlichkeit und Lesbarkeit des Quelltextes verbessert oder die Erweiterbarkeit der Software gesichert. Moderne integrierte Entwicklungsumgebungen (IDEs) wie IntelliJ IDEA oder Eclipse unterstützen den Entwickler dabei tatkräftig. Um gewährleisten zu können, dass nach einer Umstrukturierung das gewünschte Verhalten der Software fortbesteht, benötigt man übrigens ein „Sicherheitsnetz“ aus automatisierten Regressionstests (s. z.B. JUnit).

Welche Vorteile bietet Refactoring?

Fassen wir die Vorteile noch einmal zusammmen: Strukturverbesserungen ohne Verhaltensänderung, Redundanzfreiheit, bessere Verständlichkeit, Lesbarkeit und Erweiterbarkeit. Der Code wird dadurch einfacher und übersichtlicher. Er wird leichter wartbar und flexibler. Fehler können schneller lokalisiert werden. Die Software wird besser testbar. Sogar ihr Laufzeitverhalten kann komfortabler verbessert werden. Und ganz wichtig: Die Aufwände für Weiterenwicklung sowie Fehlersuche und -analyse sinken!

Wie kann man Refactoring erlernen?

Soll Ihre Software innerlich jung und schön bleiben, dann wenden Sie doch die Rezepte aus Martin Fowlers Refactoring-Buch an. Auf größere binäre Anti-Aging-Vorhaben sollten Sie sich vorbereiten, am besten gemeinsam mit uns! Beispielweise mit unserer Schulung Refactoring Legacy Code oder dem Buch Refactorings in großen Softwareprojekten. Wie Sie sich auch entscheiden: Wenn Sie das Erlernte anwenden, können Sie Ihrer reifen Software schon bald wieder in die Augen sehen „wie damals“ ;)