Abhängigkeiten sind das Grundübel der Softwareenwicklung. Durch Einhaltung des Integration Operation Segregation Principle (IOSP) verlieren die Abhängigkeiten ihren Schrecken. Ferner wird der Code so leicht automatisiert testbar. Durch Einhaltung des Principle of Mutual Oblivion (PoMO) werden unnötige Abhängigkeiten reduziert.
Die Folien zeigen die beiden typischen Strukturen von Abhängigkeiten und wie man damit umgeht. Weitere Infos siehe http://refactoring-legacy-code.net
27. f
f2f1
Flow Design:
Datenflussdiagramme
( x ) ( y )
( x ) ( y )( z )
A B
= Funktionseinheit (Methode, Klasse, etc.)
= Datenfluss (ein x fließt von A nach B)
( x )
= Verfeinerung
28. f
f2f1
Mit Abhängigkeiten (FALSCH!!)
( x ) ( y )
( x ) ( y )( z )
Y f(X x) {
return f1(x);
}
Y f1(X x) {
var z = ….
return f2(z);
}
Y f2(Z z) {
var y = …
return y;
}
29. f
f2f1
( x ) ( y )
( x ) ( y )( z )
Y f(X x) {
return f1(x);
}
Y f1(X x) {
var z = ….
return f2(z);
}
Y f2(Z z) {
var y = …
return y;
}
Integration Integration +
Operation
Operation
Mit Abhängigkeiten (FALSCH!!)
30. f
f2f1
Ohne Abhängigkeiten
( x ) ( y )
( x ) ( y )( z )
Y f(X x) {
var z = f1(x);
var y = f2(z);
return y;
}
Z f1(X x) {
var z = ….
return z;
}
Y f2(Z z) {
var y = …
return y;
}
31. f
f2f1
( x ) ( y )
( x ) ( y )( z )
Y f(X x) {
var z = f1(x);
var y = f2(z);
return y;
}
Z f1(X x) {
var z = ….
return z;
}
Y f2(Z z) {
var y = …
return y;
}
Integration Operation Operation
Ohne Abhängigkeiten