Ein weiteres Buch der Pragmatic Programmern ist gelesen, und zwar Interface-Oriented Design:

Und nein, es geht dabei nicht um die Entwicklung von User Interfaces, sondern um die Entwicklung mit Interfaces im Sinne von Programmiersprachen.
Zu Beginn des Buches werden die verschiedenen Definitionen und Begriffe rund um Interfaces erklärt, wie etwa stateless und stateful Interfaces. Als Beispiel dient oft ein Pizzashop und dessen Bestellverwaltung, was wie folgt begründet ist:
The pizza order is not just to ensure that reading begins on a full stomach; by using non-computer-related matter, we can explore some general topics relating to interfaces, such as polymorphism and implementation hiding, without getting bogged down in technology
Danach geht es um die Frage, was in einem Interface enthalten sein sollte und wie Interfaces aufgeteilt werden. Bei einem Interface geht es eigentlich darum, einen Vertrag mit dem Nutzer des Interfaces und demjenigen der es impementiert zu erstellen. Und natürlich geht es um die bekannten Punkte low coupling und high cohesion. Sehr interessant fand ich auch die Diskussion um die Verwendung von Interfaces gegenüber der Verwendung von Vererbung. Die meisten Punkte waren einem schon irgendwie instinktiv bewusst, aber es tut gut, diese einmal klar definiert und niedergeschrieben zu sehen.
Weiter geht es mit Remote Interfaces, und die Unterscheidung von Procedural- (CORBA, RPC) und Document-Interfaces (Nachrichtenorieniert).
Im zweiten Teil des Buches geht es um die Entwicklung mit Interfaces, wo als Beispiel der Pizzashop implementiert wird, wobei mit Use Cases und Tests angefangen wird. Hier werden auch die sogenannten IRI -Cards verwendet. Diese sind die Gegenstücke zu den CRC-Cards (Class-Responsability-Collaboration) und bedeuten Interface-Responsabilities-Interactions. Als Echt-Welt-Beispiel wird danach ein Link-Checker entworfen und implementiert.
Insgesamt ein sehr interessantes undlehrreiches Buch, welches am Anfang nicht sehr spannend war aber später dann umso interessanter geworden ist, da die Beispiele sehr gut gewählt und erläutert wurden.
Als nächstes, wenn ich zwischen den Prüfungen dazukommen, werde ich Agile Retrospectives lesen.