Wie können Sie in einer OO-Sprache (z. B. Java) doppelten Code je nach Umfang des Auftretens reparieren? Ich würde mit (zum Beispiel) beginnen
- Führen Sie in derselben Klasse (Bereich) das Refactoring der Extraktionsmethode durch (Fix).
- Führen Sie in Klassen derselben Hierarchie (Gültigkeitsbereich) die Extraktionsmethode und das Pull-Up (Fix) aus.
- ...
object-oriented
dry
Peter Kofler
quelle
quelle
Antworten:
Kürzlich habe ich in Onkel Bobs "Clean Code" eine gute Antwort auf meine Frage gefunden, die ich teilen möchte. Er unterscheidet drei Arten der Vervielfältigung
Teile identischen Codes sollten durch eine einzige Methode ersetzt werden. Die Lösung wäre also, die Methode zu extrahieren und an allgemeines Verhalten zu delegieren.
SthUtil
oder genanntSthLib
).Fälle von
switch/case
undif/else
die immer auf die gleichen Bedingungen testen .Module, die ähnliche Algorithmen implementieren . Diese sind am schwersten zu finden, da kein Klondetektor sie finden kann.
Auch ein gültiger Punkt, der von Oded erwähnt wird, wenn es um verschiedene Versionen von Bibliotheken geht
Am Ende ist der beste Satz, um meine Frage zu beantworten, von stimms:
quelle
Im Allgemeinen: Konsolidieren Sie doppelten Code an einem einzigen Ort und stellen Sie sicher, dass die ursprüngliche Duplizierungssite den konsolidierten Ort aufruft.
In Ihren Beispielen wäre dies innerhalb einer Klasse die extrahierte Methode und innerhalb einer Reihe von Klassen die Pulled-up-Methode innerhalb der Basisklasse.
Beim Kopieren und Einfügen von Code werden die Duplikate entfernt und sichergestellt, dass alle Benutzer jetzt die einzelne Kopie verwenden (auf welcher Ebene auch immer).
Wenn Sie mit verschiedenen Versionen von Bibliotheken arbeiten, konsolidieren Sie diese auf einer einzigen Version (falls möglich).
quelle
Ich denke, dies ist eine offene Frage, aber es hängt auch vom Status des Codes ab. Ich meine, Sie können den doppelten Code je nach Kontext ein wenig tolerieren. Die Dreierregel ist in dieser Angelegenheit gut.
Dreierregel Wenn Sie zum ersten Mal etwas tun, tun Sie es einfach. Wenn Sie das zweite Mal etwas Ähnliches tun, zucken Sie bei der Vervielfältigung zusammen, aber Sie machen die Vervielfältigung trotzdem. Wenn Sie das dritte Mal etwas Ähnliches tun, überarbeiten Sie es.
Obwohl dies ziemlich fraglich ist, werden in diesem Beitrag auch Fälle berücksichtigt, in denen Sie doppelten Code tolerieren würden.
quelle