YAGNI (You Aren't Gonna Need It) ist ein Prinzip aus Extreme Programming, geprägt von Ron Jeffries und verbreitet durch Kent Becks Extreme Programming Explained (1999): Funktionalität wird erst gebaut, wenn sie tatsächlich gebraucht wird, nicht wenn man sie vermutet. Es lehnt spekulative Verallgemeinerung ab, denn ungenutzter Code kostet Wartung und kognitive Last. Design entsteht inkrementell aus konkreten Anforderungen, und toter Code wird gelöscht.
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)