Ich suche nach Anleitungen zur Kopplung von DRY und Code. Ich dupliziere meinen Code nicht gerne und ich mag auch keine Codekopplung zwischen nicht verwandten Modulen. Ich refaktoriere also doppelten Code, wenn ich ein Jahr nach Einführung der Vervielfältigung identischen Code finde. Ich habe jedoch zunehmend Situationen erlebt, in denen die reale Welt viel unvorhersehbarer ist, und nach der Umgestaltung des Codes treten Situationen auf, die ein erneutes Herauslösen des Codes erfordern.
Wenn ich beispielsweise Code für den Umgang mit Benzinfahrzeugen, Benzin-SUVs, Elektroautos und Elektro-SUVs hätte, würde ich doppelten Code in die "Benzin" -Hierarchie und die "Elektro" -Hierarchie umgestalten, die beide von der "Fahrzeug" -Hierarchie abstammen. So weit, ist es gut. Und dann führt mein Unternehmen ein Hybridauto und ein Hybrid-Semi ein - das würde grundlegende Änderungen an meiner ursprünglichen Hierarchie erfordern. Möglicherweise würde es "Zusammensetzung" zwischen dem Benzin und den elektrischen Hierarchien erfordern.
Zweifellos ist die Codeduplizierung schlecht, da sie die Zeit verlängert, die für die Implementierung einer Änderung erforderlich ist, die allen oben genannten Produkten gemeinsam ist. Das Umgestalten von allgemeinem Code macht es jedoch ebenso schwierig, produktspezifische Variationen einzuführen, und führt zu viel "Klassensprung", wenn man die Codezeile finden muss, um einen Fehler zu beheben - eine Änderung in einer übergeordneten Klasse könnte dies bewirken Trigger lösen Regressionsfehler bei allen Nachkommen aus.
Wie erreicht man ein optimales Gleichgewicht zwischen DRY und unerwünschter Codekopplung?