Kurz gesagt: Es soll möglichst keine Redundanzen geben.
Das gilt für
Diskussion |
EinmalUndNurEinmal ist zwar ein allgemeines Prinzip, dennoch kann es nicht in sinnvollerweise "verallgemeinert" und zu einem generellen "Grundprinzip" gemacht werden.
EinmalUndNurEinmal ist eines der Elemente von ExtremeProgramming, das durch andere Elemente gestützt wird:
Das ist ein Thema, das ich voll unterstütze! Oft wird der Fehler gemacht, vorhandenen Code einfach mehrfach zu kopieren, um dann jeweils beispw. 10% davon unterschiedlich zu machen. Das ist grauenhaft - ich hasse das. --hs
Ich hasse das auch, habe mir allerdings gestern folgendes überlegt: Wenn Code kopiert wird, muss ich jedes Mal wenn ich daran etwas ändern will, alle Stellen suchen. So weit so schlecht. Wenn Code aber nicht kopiert wird und ich will ihn ändern, muss ich theoretisch alle Stellen suchen, wo er aufgerufen wird. Selbst wenn sich die Schnittstelle nicht ändert und ich nur einen Fehler behebe - vielleicht war ja irgendwo ein anderes Stück Code von diesem Fehler abhängig...
Wenn der Code aber in mehrfachen Kopien vorliegt, musst Du zusätzlich auch alle Kopien darauf untersuchen, ob der Fehler dort ebenfalls behoben werden muss. Ich sehe daher nicht, wie das Tolerieren von Duplikation die Wartbarkeit verbessern könnte.
Was dagegen bei dem angesprochenen Problem wirklich hilft, ist eine umfassende Suite von KomponentenTests und AkzeptanzTests.
Mag auf den ersten Blick so scheinen, ich glaube aber, dass die beiden zwei verschiedene Dinge ausdrücken: Das erste "einmal" sagt, dass alles von Bedeutung auch (mindestens einmal) ausgedrückt werden sollte, "und nur einmal" weist uns an, jegliche Duplikation zu vermeiden. Natürlich könnte man auch einfach "genau einmal" sagen - aber das wäre wohl bei weitem nicht so einprägsam, oder? EinmalUndNurEinmal ist wohl nicht unbedingt auf Slogans anwendbar... ;-)
Siehe auch WardsWiki:OnceAndOnlyOnceNameParadox