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)