Clean Architecture
Details
- Vollständiger Name
-
Clean Architecture nach Robert C. Martin
Kernkonzepte:
- Die Abhängigkeitsregel
-
Abhängigkeiten zeigen nur nach innen
- Konzentrische Kreise
-
Entities → Use Cases → Interface Adapters → Frameworks & Drivers
- Unabhängig von Frameworks
-
Architektur hängt nicht von Bibliotheken ab
- Testbar
-
Geschäftsregeln testbar ohne UI, Datenbank oder externe Elemente
- Unabhängig von UI
-
UI kann sich ändern, ohne Geschäftsregeln zu ändern
- Unabhängig von Datenbank
-
Geschäftsregeln nicht an Datenbank gebunden
- Unabhängig von externen Stellen
-
Geschäftsregeln wissen nichts über die Außenwelt
- Screaming Architecture
-
Architektur offenbart die Absicht des Systems
- SOLID-Prinzipien
-
Grundlage der Architektur
- Schlüsselvertreter
-
Robert C. Martin ("Uncle Bob")
Wann zu verwenden:
-
Unternehmensanwendungen mit komplexer Geschäftslogik
-
Systeme, die langfristige Wartbarkeit erfordern
-
Wenn Teamgröße und Fluktuation hoch sind
-
Projekte, bei denen Geschäftsregeln vor Technologieänderungen geschützt werden müssen
Kritik:
-
Jimmy Bogard, "Vertical Slice Architecture" (2018) — nennt die "traditionelle Layered/Onion/Clean Architecture" monolithisch im Ansatz und nur für eine Minderheit der Requests angemessen; er kritisiert mock-lastige Tests und Abstraktionen "um Konzepte, die nicht abstrahiert gehören"; seine Alternative ist Vertical Slice Architecture
-
Derek Comartin, "'Clean Architecture' and indirection. No thanks." (CodeOpinion) — tut kanonische Clean-Architecture-Beispiele als "nutzlose Indirektion" ab: Die Schichtung kostet, ohne sich in typischen Systemen zu bezahlen
-
Die Kritiken laufen zusammen: Die Dependency Rule erhebt auf jedes Feature eine fixe Indirektions-Steuer, während die meisten Änderungen ohnehin durch alle Schichten schneiden — genau die Kopplung, um die Vertical Slice Architecture stattdessen organisiert