Situation : Tilgung von technischen Schulden
Besser : gleich bei der Entwicklung gut wartbaren Code schreiben
Refactoring als Frühjahrsputz
Refactoring verbessert die Qualität und Wartbarkeit des Codes
Ziel : Senkung der Kosten für die Weiterentwicklung Die Art der Codebasis macht einen großen Unterschied, wie Änderungen vorgenommen werden Verbesserungen sind oft eine Schicht über der anderen, was die Durchführung kompliziert macht
Refactoring zielt darauf ab, dass Änderungen die Komplexität des Codes nicht steigern
Jedes kleine Refactoring hat kleine Auswirkungen, eine ganze Reihe von Änderungen kann zu großen Auswirkungen führen Bei kleineren Refactorings ist es wahrscheinlicher dass weniger schief geht
Die interne Struktur wird geändert, ohne das Äußere Verhalten zu ändern
Gutes Refactoring spart nicht nur Kosten, sondern reduziert auch technische Schulden
Bei Updates : Ist die Codestruktur refaktorisiert, um neue Ergänzungen einfach zu gestalten ?
Next Week : Zuverlässiger Code durch TDD und Unit-Testing
Refactoring != Cleanup
Cleanup ist einfaches aufräumen von Code Refactoring : Struktur durch regelmäßges Vorgehen methodisch zu erweritern / Verbessern
Rename Field
Code Smells : Kontostand mit Buchstabe “b” bennen ist kein clean Code Magic Numbers vermeiden : MATH.PI verwenden anstatt 3.14159 einzugeben
private static final double PI = 3.14159
Replace Conditionals with Polymorphism
Open-Closed Principle
Offen für Erweiterungen, verschlossen für Modifizierungen
Gezielte Umstrukturierung zur Verbesserung der Wartbarkeit und dem Ermöglichen von Erweiterungen
Regelmäßiger, iterativer und kontinuierlicher Prozess zur Vermeidung technischer Schulden
Eine schwer verständliche Codebasis, bremst aus
Spätestens dann wenn der eigene Workflow ausgebremst wird, sollte über Refactoring nachgedacht werden
- TDD
- Litter-Pickup Refactoring
- Comprehension-Refactoring
Zwei-Hüte Metapher
Refactoring
Jede änderung ist klein und macht verursacht Großen Veränderungen
Funktion hinzufügen
Jede Änderung ist eine Erweiterung Es ist ratsam, Änderungen klein zu halten
Beim Programmieren kann man oft Hüte wechseln, man trägt aber nur einen
Refactoring zur Verständnisverbesserung
Gute Entwickler legen Wert auf Clean Code
[! Ward Cunningham :] ” Whenever you have to figure out what code is doing, you are building some understanding in your head. Once you’ve built it, you should move that understanding into the code so nobody has to build it from scratch in their head again”
- Mit Teamkollegen über den Code sprechen
Pfadfinder-regel : Code in einem bessern Zustand hinterlassen, wie man ihn gefunden hat
Often, when a team learns, code written a few months ago can now seem lacking, and should be fixed! Fixing right away is a good move, if its simple of id the fix will make it easier to add the feature you wanted to add
Refactoring als Vorbereitungsmaßnahme
Neue Funktionalitäten passen oft nicht in bestehende Strukturen ! Preparatory Refactoring can be done when adding a new feature
Refactoring als Langfristmaßnahme
Ziel : stabile und wartbare Arhcitektur schaffen Ein solches Refactoring kann mehrere Monate dauern Beispiele : Ersetzen eines großen Moduls Änderung des Datenbank-Persistenz-Frameworks
Refactoring als eine Schönheitskur ?
Refactoring erleichtert das Veständnis
ZIEL : Langristige Einsparungen und Beschleunigung künftiger Anpassungen Refactoring und neue Funktionalitäten im Einklang
Refactoring → Clean Code && Faster Delivery