Single Responsibility Principle
Eine Verantwortung bezeichnet eine kohärente Zuständigkeit und ihre Änderungsgründe, nicht eine einzelne Methode.
- VerantwortungFasst Verhalten mit gemeinsamem Änderungsgrund zusammen.
- ÄnderungsgrundErklärt, warum eine Anpassung fachlich oder organisatorisch nötig wird.
- KopplungGemeinsame Änderungen zeigen, wo Zuständigkeiten verbunden sind.
Einordnung
Warum das wichtig ist
Verantwortungen anhand konkreter Änderungsgründe zusammenfassen und voneinander trennen.
Entwurfsprinzip für fachliche und technische Modulgrenzen.
Verantwortung und Änderungsgrund
Der Beispielshop bleibt ein modularer Monolith mit sieben Modulen und gemeinsamer Auslieferung.
So liest du das Bild
- Verantwortung Zuständigkeit
- Änderungsgrund Auslöser
- Kopplung Änderungsmuster
| Änderung | Beobachtung | Mögliche Verantwortung |
|---|---|---|
| Fachregel | Regel ändert sich | Fachliches Modul |
| Darstellung | Format ändert sich | Dokumentbaustein |
Nutzen & Grenzen
Hilft, wenn
- Ein Baustein muss sich aus voneinander unabhängigen Gründen ändern.
- Änderungen lassen sich einer fachlich oder organisatorisch kohärenten Verantwortung zuordnen.
Grenzen
- „Eine Klasse pro Methode“ erhöht die Zahl der Bausteine und verteilt zusammengehöriges Wissen.
- Ein klarer Änderungsgrund ist kontextabhängig; Teams müssen Grenzen an realen Änderungsmustern prüfen.
In der Praxis
- Sammle konkrete Änderungen aus den letzten Monaten und ordne sie den betroffenen Modulen und Klassen zu. Prüfe mit dem Änderungsteam, ob die Fälle denselben fachlichen oder organisatorischen Grund haben.
- Gruppiere Verhalten, das aus demselben Grund geändert wird, und trenne Zuständigkeiten mit unabhängigen Änderungsursachen. Beschreibe jede Verantwortung als zusammenhängende Entscheidung, nicht als einzelne Methode.
- Vergleiche die vorgeschlagene Grenze mit einem konkreten Änderungsfall. Wenn eine Anforderung mehrere Gruppen regelmäßig gemeinsam ändern lässt, prüfe, ob Regeln oder Verantwortungen im Modell falsch zugeschnitten sind.
Ausführliche Erklärung lesen
Das Single Responsibility Principle wird häufig mit „one reason to change“ erläutert. Es hilft, Verantwortungen an fachlichen oder organisatorischen Änderungsgründen auszurichten. Eine Klasse kann mehrere Methoden enthalten, solange sie gemeinsam eine zusammenhängende Aufgabe erfüllen. Umgekehrt kann eine einzelne Methode mehrere Zuständigkeiten vermischen, wenn sie etwa fachliche Berechnung, Datenbankzugriff und Formatierung übernimmt.
Das Prinzip betrachtet Änderungsgründe; Separation of Concerns ordnet getrennte Belange, und Kohäsion prüft den Zusammenhalt eines Bausteins.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Welche Verantwortung passt zur Änderung von Versandregeln?
Lösung mit Begründung ansehen
Die fachliche Zuständigkeit für Versand.
AnwendenAuf eine neue Lage übertragen
Wie prüfst du, ob zwei Aufgaben zusammengehören?
Lösung mit Begründung ansehen
Vergleiche, ob sie aus denselben fachlichen Änderungsgründen entstehen.
BewertenEine Alternative abwägen
Welche Folge hat das Verteilen einer Verantwortung auf viele Module?
Lösung mit Begründung ansehen
Eine fachliche Änderung erfordert koordinierte Änderungen an mehreren Stellen.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.
Quellen
- Robert C. Martin · The Single Responsibility Principle (öffnet in neuem Tab)Erläuterung des Änderungsgrunds als Leitkriterium.
- Martin Fowler · Shotgun Surgery (öffnet in neuem Tab)Code Smell für Änderungen, die viele Stellen betreffen.
- Pearson · Agile Software Development: Principles, Patterns, and Practices (öffnet in neuem Tab)Buchquelle zu SOLID-Prinzipien und Entwurf.