Refactoring
Kurz: Beim Refactoring wird die innere Struktur von Code verbessert, ohne sein äußeres Verhalten zu ändern – mit dem Ziel, ihn lesbarer, einfacher und wartbarer zu machen.
Genauer: Refactoring ist kein Fehlerbehebungs- und kein Funktionsschritt: Danach muss das Programm exakt dasselbe tun wie vorher. Deshalb braucht man vorher Tests (Unit-Tests), die das beweisen. Kleine Schritte, nach jedem Schritt Tests laufen lassen, häufig committen.
Im Detail
Typische Refactorings
| Refactoring | Wirkung |
|---|---|
| Methode extrahieren | Langen Codeblock in eine benannte Funktion auslagern |
| Variable/Methode umbenennen | Namen verständlich machen |
| Duplikate zusammenführen | gleiche Logik an einer Stelle bündeln |
| Parameterobjekt einführen | viele Parameter in ein Objekt verpacken |
| Bedingung durch Polymorphie ersetzen | switch über Typen durch Klassen ([[polymorphie |
| Magic Number durch Konstante ersetzen | Zahlen erhalten einen Namen |
// vorher
function bestellung(preis, menge, land) {
let summe = preis * menge;
if (land === "DE") summe = summe * 1.19;
else if (land === "AT") summe = summe * 1.2;
return summe;
}
// nachher: Steuersatz als eigene, testbare Einheit
const STEUERSATZ = { DE: 1.19, AT: 1.2 };
const steuersatz = (land) => STEUERSATZ[land] ?? 1;
function bestellung(preis, menge, land) {
return preis * menge * steuersatz(land);
}Wann refaktorisieren?
- Beim Anfassen von Code, den man nicht versteht („Pfadfinderregel“: den Platz sauberer verlassen).
- Wenn eine neue Funktion in der alten Struktur umständlich einzubauen ist.
- Wenn ein Review Geruch („Code Smell“) zeigt: sehr lange Funktionen, große Klassen, Duplikate.
Moderne Entwicklungsumgebungen (IntelliJ, VS Code, Visual Studio) automatisieren viele Refactorings sicher. Das Ziel ist Clean Code.
Siehe auch: Clean Code, Unit-Test, TDD, Code-Review