EMZETT.
Login

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

RefactoringWirkung
Methode extrahierenLangen Codeblock in eine benannte Funktion auslagern
Variable/Methode umbenennenNamen verständlich machen
Duplikate zusammenführengleiche Logik an einer Stelle bündeln
Parameterobjekt einführenviele Parameter in ein Objekt verpacken
Bedingung durch Polymorphie ersetzenswitch über Typen durch Klassen ([[polymorphie
Magic Number durch Konstante ersetzenZahlen 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