Wie tief greifst du ein?
01Refactoring
Struktur verbessern, ohne das Verhalten zu ändern – Methode extrahieren, umbenennen, Duplikate entfernen.
- Verhalten: identisch
- Umfang: Minuten bis Tage
- Risiko: niedrig (mit Tests)
02Redesign
Architektur oder Design eines Teils neu schneiden – neues Datenmodell, Modul aufteilen, neue UI.
- Verhalten: teils angepasst
- Umfang: Wochen
- Risiko: mittel
03Modernisierung
Altsystem auf aktuelle Plattform oder Technik bringen – Cloud, neues Framework, Container.
- Verhalten: meist gleich
- Umfang: Monate
- Risiko: mittel bis hoch
04Rewriting
Von vorn neu implementieren, oft mit neuer Sprache oder neuem Stack.
- Verhalten: neu (Ziel: gleich)
- Umfang: Monate bis Jahre
- Risiko: hoch
Das Beispiel im Code
Vorher
def total(o):
t = 0
for i in o["items"]:
t += i["price"] * i["qty"]
if o["vip"]:
t = t * 0.9
return tNach dem Refactoring
VIP_DISCOUNT = 0.9
def order_total(order: Order) -> Decimal:
subtotal = sum(i.price * i.qty for i in order.items)
return subtotal * VIP_DISCOUNT if order.is_vip else subtotalGleiches Ergebnis, aber sprechende Namen, Typen und eine benannte Konstante. Genau das ist Refactoring – und es ist nur sicher, wenn Tests das Verhalten absichern.