SOLID Principles
Details
- Vollständiger Name
-
SOLID Object-Oriented Design Principles
Kernkonzepte:
- Single Responsibility Principle (SRP)
-
Jede Klasse sollte eine Verantwortlichkeit haben
- Open/Closed Principle (OCP)
-
Entitäten sollten offen für Erweiterung, geschlossen für Modifikation sein
- Liskov Substitution Principle (LSP)
-
Subtypen müssen durch ihre Basistypen ersetzbar sein
- Interface Segregation Principle (ISP)
-
Clients sollten nicht gezwungen werden, von Schnittstellen abzuhängen, die sie nicht nutzen
- Dependency Inversion Principle (DIP)
-
Von Abstraktionen abhängen, nicht von konkreten Implementierungen
- Schlüsselvertreter
-
Robert C. Martin ("Uncle Bob")
Wann zu verwenden:
-
Entwurf wartbarer und skalierbarer objektorientierter Systeme
-
Refactoring von Legacy-Code zur Verbesserung der Struktur
-
Bau von Systemen, wo Flexibilität und Testbarkeit wichtig sind
-
Lehre oder Durchsetzung guter Software-Design-Praktiken
Kritik:
-
Dan North, "CUPID — for joyful coding" (2022; vorausgegangen sein Talk "Why Every Single Element of SOLID is Wrong", 2017) — die Prinzipien seien zu vage, um Entscheidungen zu leiten ("Responsibility" ist undefiniert), und optimierten auf einen OO-Designstil, über den die Praxis hinweggegangen ist; als Alternative schlägt er die CUPID-Eigenschaften vor
-
John Ousterhout, "A Philosophy of Software Design" (2018) — SRP-getriebene Zerlegung erzeugt viele flache Klassen, deren Schnittstellen mehr Komplexität hinzufügen, als ihre Implementierungen verbergen; er plädiert für wenige, tiefe Module
-
Die Prinzipien stützen sich auf Anekdote und Autorität statt auf empirische Evidenz — ein wiederkehrender Punkt in der Debatte um beide Kritiken