Gründe, bis zum dritten Mal in der Dreierregel zu warten?

16

Ich bin gerade auf den Artikel " Rule of Three " in Wikipedia gestoßen

Bei der Dreierregel handelt es sich um eine Faustregel zur Umgestaltung des Codes, mit der entschieden wird, wann ein replizierter Code durch eine neue Prozedur ersetzt werden soll. Es besagt, dass der Code einmal kopiert werden kann, aber wenn derselbe Code dreimal verwendet wird, sollte er in eine neue Prozedur extrahiert werden. Die Regel wurde von Martin Fowler im Refactoring eingeführt und Don Roberts zugeschrieben.

Ich weiß, dass dies nur eine Faustregel ist, aber warum wird empfohlen, die Umgestaltung erst nach der zweiten Vervielfältigung vorzunehmen? Gibt es einen Nachteil beim Refactoring, wenn wir die erste Kopie schreiben?

Louis Rhys
quelle
2
See Two ist eine unmögliche Zahl und Zero-One-Infinity-Regel für eine andere Reihe von Perspektiven.
AakashM
Wenn es um Softwareentwicklung geht, ist das ursprüngliche Wiki oft eine viel bessere Quelle als Wikipedia. Schließlich hat Ward Cunningham das Wiki erfunden , um über Softwareentwicklung zu sprechen. Siehe C2.Com/cgi/wiki?RuleOfThree
Jörg W Mittag
2
Wenn es zwei Szenarien zur Wiederverwendung gibt, können Sie die Logik einfach verzweigen (wenn, sonst). Sobald drei mögliche Pfade erreicht sind, ist es einfacher, die Faktoren neu zu bestimmen, als sie zu replizieren und zu verwalten.
Andrew Lewis
Ich denke, es ist eine bequeme Entschuldigung für das Kopieren und Einfügen, wenn man tatsächlich umgestalten und verallgemeinern kann. Wenn Sie den dritten Fall erhalten, können Sie mehr verallgemeinern.
Alexey

Antworten:

17

Ich denke, diese Faustregel existiert, weil es leicht ist, beim ersten Entwerfen des Codes oder nach der ersten Vervielfältigung "Was wäre wenn ..." zu spielen. Ich habe in einigen Fällen eine schwere Analyse-Lähmung festgestellt, weil Leute angefangen haben, Funktionen zu entwickeln, die möglicherweise später benötigt werden. Wird aber für das unmittelbare Problem nicht benötigt.

Es gibt eine Kunst, nur das zu entwerfen / schreiben, was Sie brauchen, während der Code für künftiges Re-Factoring zugänglich bleibt.

EdH
quelle
8
Das ist ein guter Punkt. Nach meiner Erfahrung werden durch ein drittes Exemplar auch die Gemeinsamkeiten und Unterschiede zwischen ihnen etwas schärfer als bei nur zwei Exemplaren.
Daniel B