Der Entwickler- Almanach
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Integrationen sind abhängig von anderen Funktionseinheiten – doch diese Abhängigkeit ist minimal. Denn<br />
zwar interessiert sich eine Integration für die Semantik einer integrierten Funktionseinheit, sie tut mit deren<br />
Ergebnissen jedoch selbst nichts. Integrationen enthalten keine Logik, das heißt sie sind frei von<br />
Kontrollstrukturen und Ausdrücken. Ihr Job ist allein die Verdrahtung der Blasen, die sie integrieren<br />
sollen. Im einfachsten Fall bestehen sie also nur aus Funktionsaufrufen.<br />
Beispiel:<br />
Das IOSP macht Integrationen einfach zu lesen und robust. Änderungen ergeben sich häufig in der Logik<br />
– doch die ist in den Operationen konzentriert.<br />
Dadurch, dass Integrationen ohne Logik sind, lassen sie sich auch leicht wiederverwenden.<br />
Integrationshierarchien sind deshalb billig. Und das bedeutet, es ist billig, Inkremente im Code zu erhalten.<br />
Für Integrationen muss kein optimales Klassenmodell gefunden werden. Sie selbst greifen ja nicht auf<br />
globale Daten zu. Das tun ausschließlich Operationen. Eine Klasse, die nur Integrationsmethoden enthält,<br />
die für sich jeweils überschaubar sind, kann also durchaus sehr umfangreich sein.<br />
Sie ist in ihrer Struktur trivial. Ein großer Fan-out an Abhängigkeiten von Operationen ist unkritisch, da<br />
die Integration einem anderen Aspekt angehört. Sie ist zu vergleichen mit einem Dependency-Injection-<br />
Container, der ja auch viele Klassen kennt und trotzdem unempfindlich gegen Veränderungen in ihnen ist.<br />
Um die Entkopplung zur Erhaltung der Inkremente noch zu erhöhen, ist allerdings ein weiteres Prinzip<br />
nötig, denke ich. Das nenne ich das Prinzip der gegenseitigen Nichtbeachtung (Principle of Mutual