YAGNI (You Aren’t Gonna Need It)
Details
- Vollständiger Name
-
You Aren’t Gonna Need It
Kernkonzepte:
- Nicht für hypothetische Zukunft bauen
-
Funktionalität nur implementieren, wenn sie tatsächlich benötigt wird, nicht wenn man vermutet, dass sie benötigt werden könnte
- Spekulative Verallgemeinerung
-
Anti-Pattern, Abstraktionen für vorgestellte zukünftige Anforderungen zu bauen, die möglicherweise nie eintreten
- Inkrementelles Design
-
Design durch tatsächliche Bedürfnisse entstehen lassen; Architektur weiterentwickeln, wenn Anforderungen konkret werden
- Kosten des Mitführens
-
Ungenutzter Code erhöht den Wartungsaufwand, steigert die Komplexität und erzeugt kognitive Last für das gesamte Team
- Toten Code löschen
-
Code, der keinem aktuellen Zweck mehr dient, konsequent entfernen
- Extreme-Programming-Ursprung
-
Zentrale XP-Praxis neben TDD, Refactoring und Continuous Integration
- Reversibilität
-
Einfache, änderbare Entscheidungen gegenüber voreiligen Festlegungen auf komplexe Lösungen bevorzugen
- Schlüsselvertreter
-
Ron Jeffries (prägte den Begriff), Kent Beck ("Extreme Programming Explained", 1999)
Wann zu verwenden:
-
Bekämpfung von Over-Engineering und voreiliger Abstraktion
-
Agile Projekte mit iterativer Lieferung und sich entwickelnden Anforderungen
-
Refactoring von Legacy-Systemen, die mit ungenutzten Features belastet sind
-
Wenn man versucht ist, "Nur-für-den-Fall"-Funktionalität oder Konfigurierbarkeit hinzuzufügen
Verwandte Anker:
-
DRY - Eliminiert Duplizierung vorhandenen Wissens (komplementär, aber verschieden)
-
SPOT - Single Point of Truth, verwandtes Einfachheitsprinzip
-
TDD, Chicago School - YAGNI ist ein Kernprinzip des klassischen TDD
-
KISS Principle - Systeme so einfach wie möglich halten (komplementäres Einfachheitsprinzip)