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