Test-Double

SOLID im Überblick: fünf Prinzipien und die Dependency Inversion

SOLID fasst fünf Entwurfsprinzipien für objektorientierten Code zusammen: Single Responsibility, Open Closed, Liskov Substitution, Interface Segregation und Dependency Inversion. Ausführlich behandelt der Artikel das letzte: Du baust in der CSB-Rad-Kata den Bestellabschluss so um, dass er nur noch von Abstraktionen abhängt, unterscheidest Dependency Inversion, Inversion of Control und Dependency Injection und testest mit Stub und Mock. Zum Schluss findest Du mehrere Verstöße zugleich und legst fest, was Du zuerst umbaust.

Übungsaufgaben zu SOLID und Dependency Inversion

Drei Übungsaufgaben zu SOLID: Du entkoppelst in der CSB-Rad-Kata den Bestellabschluss nach dem Dependency Inversion Principle und testest ihn mit Stub und Mock, findest im Erinnerungsdienst des Mitfahrlabors Verstöße gegen mehrere SOLID-Prinzipien, legst eine Reihenfolge für den Umbau fest und baust ihn mit fester Uhr im Test um, und nimmst Stellung zu der Frage, wann Dependency Injection zu viel ist.

Übungsaufgaben zum Erweitern statt Ändern: Open Closed Principle und Interface Segregation Principle

Drei Übungsaufgaben zum Erweitern statt Ändern: Du ersetzt im Mitfahrlabor eine Fallunterscheidung nach dem Fahrzeugtyp durch Polymorphie, baust in der CSB-Rad-Kata die Versandarten als Strategie um und ergänzt das Expresspaket, ohne den Bestellabschluss zu ändern, und teilst ein zu breites Interface des Mitfahrlabors nach den Rollen seiner Nutzenden auf, mit Klassendiagramm vor und nach dem Umbau.

Erweitern statt ändern: Open Closed Principle und Interface Segregation Principle

Jede neue Versandart verlangt im Bestellabschluss der CSB-Rad-Kata Änderungen an mehreren switch-Anweisungen. Mit dem Open Closed Principle kommen neue Varianten als neue Klassen dazu, ohne fertigen Code zu ändern: Fallunterscheidungen nach dem Typ werden zu Polymorphie mit einer Strategie hinter einem Interface. Das Interface Segregation Principle hält diese Interfaces schlank, was vor allem Tests mit Test-Doubles erleichtert. Du lernst auch, wann sich die Abstraktion nicht lohnt (YAGNI).