SOLID-Prinzipien fuehren zu wartbarem, erweiterbarem Code. Kein Dogma, sondern nuetzliche Richtlinien.
S – Single Responsibility¶
SOLID-Prinzipien in der Praxis¶
class UserManager: def create_user(self, data): … def send_email(self, user): … def generate_report(self, users): …
✅ Richtig – getrennte Verantwortlichkeiten¶
class UserService: def create_user(self, data): … class EmailService: def send_welcome(self, user): … class ReportService: def generate(self, users): …
O – Open/Closed¶
Offen fuer Erweiterung, geschlossen fuer Modifikation¶
class PaymentProcessor(Protocol): def process(self, amount: float) -> bool: … class StripePayment: def process(self, amount: float) -> bool: … class PayPalPayment: def process(self, amount: float) -> bool: …
Neuer Typ = neue Klasse, keine Aenderung der bestehenden¶
D – Dependency Inversion¶
❌ High-Level-Modul haengt von Low-Level-Modul ab¶
class OrderService: def __init__(self): self.db = PostgresDB() # Harte Abhaengigkeit
✅ Abhaengigkeit von Abstraktion¶
class OrderService: def __init__(self, db: DatabasePort): self.db = db # Injiziert, testbar
L – Liskov Substitution & I – Interface Segregation¶
- Liskov: Eine Unterklasse muss durch die Elternklasse ersetzbar sein
- Interface Segregation: Kleine, spezifische Interfaces statt eines grossen
Wichtigste Erkenntnis¶
SRP: eine Klasse = eine Verantwortung. DIP: von Abstraktionen abhaengen. SOLID als Richtlinien, nicht als Dogma.