Web & Entwicklung

Refactoring

Refactoring bezeichnet das Umbauen von Code, ohne sein Verhalten nach außen zu ändern. Ziel ist bessere Verständlichkeit und Wartbarkeit — nach außen bleibt alles wie vorher.

Redaktionell geprüft von Alexander SeidlertwentyonepixelsStand:

Warum man Funktionierendes anfasst

Weil Software gelesen wird, bevor sie geändert wird. Code, den niemand mehr versteht, ist teuer: Jede Erweiterung dauert länger, jede Änderung birgt mehr Risiko, und irgendwann traut sich niemand mehr an die Stelle.

Refactoring ist die Gegenmaßnahme, und zwar laufend statt in einem großen Aufräumprojekt. Wer erst umbaut, wenn nichts mehr geht, hat keinen Umbau mehr vor sich, sondern einen Neubau.

Wann sich Aufräumen rechnet

Dort, wo häufig geändert wird. Code, den seit zwei Jahren niemand angefasst hat, aufzuräumen bringt nichts und trägt Risiko — Code, der jeden Monat angefasst wird, zahlt die Investition binnen weniger Änderungen zurück.

Die praktische Regel lautet deshalb: aufräumen, wenn man ohnehin an der Stelle ist. Ein eigenes Aufräumprojekt ohne fachlichen Anlass ist selten durchzusetzen und selten nötig.

Die Bedingung

Automatische Tests. Ohne sie ist Umbauen ohne Verhaltensänderung eine Behauptung — man ändert Code und hofft, dass alles bleibt wie es war. Mit Tests ist es überprüfbar.

Deshalb ist die richtige Reihenfolge: erst Tests für das aktuelle Verhalten, dann umbauen. Umgekehrt entsteht ein Umbau, der die Fehler mitschleppt, die niemand bemerkt hat.

Häufige Fragen zu Refactoring

Refactoring behält das bestehende Verhalten bei, eine Neuentwicklung ersetzt es. Beim Umbau bleibt die über Jahre gewachsene Fachlogik samt ihrer undokumentierten Sonderfälle erhalten; beim Neubau muss jeder dieser Sonderfälle erst wiedergefunden werden, und was niemand findet, fehlt anschließend. Die Entscheidungsregel lautet deshalb: Stimmen die fachlichen Regeln und ist nur ihre Anordnung im Code schlecht, ist Refactoring der Weg. Sind die Regeln selbst falsch, ändert kein Umbau daran etwas – dann ist eine Neuentwicklung fällig.

Refactoring macht Software weder schneller noch fehlerfrei und liefert kein neues Merkmal. Wer nach einer Umbaurunde eine sichtbare Verbesserung erwartet, wird enttäuscht: Nach außen ist alles wie vorher – das ist die Definition, nicht ein Versäumnis. Der Gewinn zeigt sich erst bei der nächsten Änderung an derselben Stelle, und nur dort. Auch vorhandene Fehler verschwinden nicht nebenbei; ein Umbau verschiebt sie mit, nur besser sortiert. Behoben werden sie in einem eigenen Schritt.

Im Regelfall das Entwicklungsteam, und zwar ohne Rückfrage, solange der Umbau keinen Termin verschiebt. Sobald er das tut, ist es keine technische Entscheidung mehr, sondern eine über Reihenfolge und Zeit – und die gehört dem Auftraggeber. Die Probe lautet: Lässt sich das Refactoring im selben Arbeitsschritt abschließen und rückstandslos zurücknehmen, entscheidet das Team. Zieht es eine eigene Abnahme nach sich, entscheidet der Kunde. Ohne diese Trennung entstehen Umbauten, die niemand bestellt hat.

So weit, wie Compiler oder Typprüfung mitlesen, und keinen Schritt weiter. Eine Umbenennung in der Entwicklungsumgebung erreicht jede Stelle, die das Symbol als Symbol verwendet. Sie erreicht nicht, was als Zeichenkette irgendwo steht: Feldnamen in Vorlagen, Spaltennamen in der Datenbank, Übersetzungsschlüssel, Einträge in gespeicherter Konfiguration, dynamisch zusammengesetzte Aufrufe. Bei übernommenen Projekten finden wir regelmäßig genau solche Reste – eine sauber umbenannte Methode und daneben eine Vorlage, die weiter den alten Namen ruft.

Rund 17,3 von 41,1 Wochenstunden, also 42 Prozent, gerechnet aus beiden Angaben. Die Werte stammen aus der Studie „The Developer Coefficient“ von Stripe und Harris Poll, September 2018; befragt wurden über 1.000 Entwickler und über 1.000 Führungskräfte in fünf Ländern, darunter Deutschland. Auf technische Schulden allein entfielen 13,5 Stunden. Erhoben wurde per Selbstauskunft, nicht gemessen – die Größenordnung trägt, die Nachkommastelle nicht.

Darauf, dass es dort keines mehr ist. Sobald ein Name nach außen sichtbar wird – als Adresse, als Feld einer Programmierschnittstelle, als Spalte in einer fremd genutzten Datenbank –, verändert seine Umbenennung das Verhalten für alle, die ihn aufrufen. Das ist ein Bruch, kein Umbau. Der übliche Weg führt über eine Übergangszeit: Alter und neuer Name antworten parallel, der alte gilt als veraltet, und erst wenn ihn niemand mehr nutzt, fällt er weg.

Mehr zum Thema

7 Min. Lesezeit

Ivanti Connect Secure: Angriffe laufen – jetzt patchen

Eine Lücke in Ivantis VPN-Gateway Connect Secure lässt Angreifer ohne Anmeldung Befehle ausführen, und sie wird bereits ausgenutzt. Welche Versionen betroffen sind, welche Updates schließen und was das Update nicht leistet.

9 Min. Lesezeit

PHP-Version veraltet: Was Firmenwebsites bis Ende 2026 tun

Ab dem 1. Januar 2027 bekommt PHP 8.2 keine Sicherheitsupdates mehr. Wie Sie prüfen, welche Version Ihre Website nutzt, warum der Extended Support des Hosters nur die halbe Antwort ist und was ein Update kostet.

Alle Fachbeiträge ansehen

Passende Leistungen

Wartung & Support

Laufende Pflege, Sicherheits-Updates und Monitoring mit Sentry, Uptime-Checks und Lighthouse CI — bevor aus kleinen Problemen große werden.

Mehr dazu

Sicherheitsaudit & Code Review

Sicherheitsanalyse nach OWASP Top 10: Penetration Testing, Code Review und Behebung von Schwachstellen.

Mehr dazu