Code-Smells(Gerüche)
- Lange Methode, viele Bedingungen(switch-Befehle: McCabe Cyclomatic Complexity), duplizierter Code
- Lange Parameterlisten, viele Attribute(Datenklumpen: Number of Attributes), große Klassen
- Falsche Zuständigkeiten(Neid: Weighted methods per Class), unangebrachte Intimität 错误的职责(嫉妒),不适当的亲密关系
- Viele Kommentare, Neigung zu elementaren Typen, Temporäre Felder 临时字段
Klasse extrahieren
Smells: Große Klasse, Datenklumpen, duplizierter Code
Methode extrahieren
Ein Fragment kann zusammengefasst werden - Methode
Smells: Lange Methode, duplizierter Code, Kommentare
z.B. eine separate print-Funktion
Geschachtelte Bedingungen durch Wächterbedingungen ersetzen
Smells: Lange Methode
Wächterbedingungen: z.B. if()return…;
Parameter durch explizite Methode ersetzen
Smells: Lange Parameterliste, Swich-Befehl
wie setHeight-Methode in objektorientierten Sprache
Parameterobjekt einführen
Smells: Lange Parameterliste, Neigung zu elementaren Typen, Datenklumpen
Eine Gruppe von Parameter => ein Objekt
Methode verschieben
Smells: Datenklassen, unangebrachte Intimität, Neid
eine Methode nutzt mehr Elemente einer anderen Klasse oder wird von mehr Elementen einer Klasse benutzt als von denen, in der sie definiert ist.