Refactoring
Ist das Ändern eines Software Systems auf eine Weise die das äußere Verhalten des Codes nicht verändert, aber dessen interne Struktur verbessert.
- Nicht-funktionale Anforderungen - NFRs
- Leichte Erweiterbarkeit
- Information Hiding Prinzip
- Leiche Änderbarkeit
- geringe Redundanz
- Leichte Verständlichkeit
- Pragmatik gegen Allgemeingültigkeit oder größtmögliche Kürze abwägen
- Leichte Erweiterbarkeit
Guter Code
- Sprechende Variablen- und Methodennamen
- Kurze Klassen und Methoden
- gut benannte private Hilfsmethoden/Variablen definieren
- Geringe Verschachtelungstiefe/Einrückung
- Keine unnötigen Kommentare
- Funktionsweise dokumentieren durch JavaDoc oder Unit-Tests
Ziele von Refactoring
manuelle
- Redundanzverringerung
- kürzerer Code
- bessere Wartbarkeit
- Bessere Verständlichkeit
- Manchmal dafür länger
- Erhöhung der Flexibilität
- z.B. Einführung von extra Interface
- oft komplizierter, weil Indirektion
automatisch
- rename
- move
- extract variable
- extract method
- inline
- extract interface
- pull up
- replace constructor with builder