Practical Refactoring¶
Pragmatische Refactoring-Taktiken und Workflows fuer den Alltag. Vom Code Smell zum Clean Code.
Refactoring-Workflow¶
graph LR
A[Code Smell<br/>identifizieren] --> B[Tests<br/>sicherstellen]
B --> C[Kleinen Schritt<br/>refactoren]
C --> D[Tests<br/>ausfuehren]
D --> E{Gruen?}
E -->|Ja| F[Commit]
E -->|Nein| G[Rollback]
F --> A
G --> C
Haeufige Code Smells¶
| Smell | Refactoring |
|---|---|
| Lange Funktion | Extract Method |
| Grosse Klasse | Extract Class |
| Parameter-Liste | Introduce Parameter Object |
| Feature Envy | Move Method |
| Primitive Obsession | Replace Primitive with Value Object |
| Duplicated Code | Extract Method / Template Method |
| God Object | Decompose nach SRP |
| Shotgun Surgery | Move Method, Inline Class |
Strategien¶
Strangler Fig Pattern¶
Fuer grosse Legacy-Systeme: Neue Funktionalitaet um das alte System herum bauen und schrittweise ersetzen.
Branch by Abstraction¶
- Abstraction (Interface) erstellen
- Alte Implementierung hinter Interface setzen
- Neue Implementierung schreiben
- Feature Flag zum Umschalten
- Alte Implementierung entfernen
Mikado Method¶
Refactoring-Abhaengigkeiten als Graph visualisieren und von den Blaettern her aufloesen.
Verwandte Skills¶
Quelldatei: skills/software-engineering/practical-refactoring.md