Smells und Heuristiken für Web Development aus dem Inhaltsverzeichnis von Robert C. Martin Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code: Deutsche Ausgabe
- Kommentare
- C1: Ungeeignete Informationen
- C2: Überholte Kommentare
- C3: Redundante Kommentare
- C4: Schlecht geschriebene Kommentare
- C5: Auskommentierter Code
- Umgebung
- E1: Ein Build erfordert mehr als einen Schritt
- E2: Tests erfordern mehr als einen Schritt
- Funktionen
- F1: Zu viele Argumente
- F2: Output-Argumente
- F3: Flag Argumente
- F4: Tote Funktionen
- Allgemein
- G1: Mehrere Sprachen in einer Quelldatei
- G2: Offensichtliches Verhalten ist nicht implementiert
- G3: Falsches Verhalten an den Grenzen
- G4: Übergangene Sicherungen
- G5: Duplizierung
- G6: Auf der falschen Abstarktionsebene codieren
- G7: Basisklasse hängt von abgeleiteten Klassen ab
- G8: Zu viele Informationen
- G9: Toter Code
- G10: Vertikale Trennung
- G11: Inkonsistenz
- G12: Müll
- G13: Künstliche Kopplung
- G14: Funktionsneid
- G15: Selektor-Argumente
- G16: Verdeckte Absicht
- G17: Falsche Zuständigkeit
- G18: Fälschlich als statisch deklarierte Methoden
- G19: Aussagekräftige Variablen verwenden
- G20: Funktionsname soll die Aktion ausdrücken
- G21: Den Algorithmus verstehen
- G22: Logische Abhängigkeiten in physische Umwandeln
- G23: Polymorphismus statt If/Else oder Switch/Cas verwenden
- G24: Konventionen beachten
- G25: Magische Zahlen durch bekannte Konstanten ersetzen
- G26: Präzise sein
- G27: Struktur ist wichtiger als Konvention
- G28: Bedingungen einkapseln
- G29: Negative Bedingungen vermeiden
- G30: Eine Aufgabe pro Funktion!
- G31: Verborgene zeitliche Kopplungen
- G32: Keine Willkür
- G33: Grenzbedingungen einkapseln
- G44: In Funktionen nur eine Abstraktionsebene tiefer gehen
- G45: Konfigurierbare Daten hoch ansiedeln
- G46: Transitive Navigation vermeiden
- Namen
- N1: Deskriptive Namen wählen
- N2: Namen sollten der Abstraktionsebene entsprechen
- N3: Möglichst die Standardnormen Kultur verwenden
- N4: Eindeutige Namen
- N5: Lange Namen für große Geltungsbereichen
- N6: Codierungen vermeiden
- N7: Namen sollten Nebeneffekte beschreiben
- Tests
- T1: Unzureichende Tests
- T2: Ein Coverage-Tool verwenden
- T3: Triviale Tests nicht überspringen
- T4: Ein ignorierter Test zeigt eine Zweideutigkeit auf
- T5: Grenzbedingungen testen
- T6: Bei Bugs die Nachbarschaft gründlich testen
- T7: Das Muster des Scheiterns zur Diagnose nutzen
- T8: Hinweise auf Coverage-Patterns
- T9: Tests sollten schnell sein