Refactoring ist wie das Abholen Ihres Zimmers.
Wenn Sie für Ordnung sorgen, haben Sie einen linearen Overhead, der proportional zu der Menge an produktiver Arbeit ist, die Sie in algorithmologischen Begriffen am Code O (n) ausführen. Angenommen, Sie verbringen 10% Ihrer Zeit mit Umgestalten (oder Aufräumen), dann sind 10% eine Selbstverständlichkeit und bleiben über die Zeit konstant.
Wenn Sie jedoch Ihre schmutzigen Sachen in eine Ecke werfen und weitermachen, wird die Zeit, die Sie für die Abholung Ihres Zimmers benötigen, immer länger, je komplexer das Chaos wird. Angenommen, jedes einzelne Stück schmutziger Wäsche trägt exponentiell zur erforderlichen Reinigungszeit bei, befinden Sie sich jetzt in einer O (e n ) -Situation.
Jeder, der sich jemals mit dem Konzept der algorithmischen Komplexität befasst hat, wird feststellen, dass es irgendwo eine Gewinnschwelle gibt, das heißt, dass sich eine optimale Menge an Schmutzwäsche ansammelt. Wie viel das ist, hängt von den konstanten Faktoren ab, die in der Big-O-Notation verworfen werden. Ein weiterer Faktor ist der Wert Ihrer Arbeit im Laufe der Zeit: Wenn Ihre Arbeit jetzt viel wert ist, aber in der nächsten Woche günstig (dh es gibt eine Frist für diesen Freitag für dieses Projekt und drei weitere, aber danach sind Sie meistens untätig ) könnte sich die Gleichung zugunsten eines Nicht-Refactorings herausstellen.
Und dann ist da noch die kritische Masse der Komplexität. Irgendwann wird das Durcheinander (wenn Sie so wollen, "kritisches Durcheinander") so schlimm, dass es einfacher zu sein scheint, den gesamten Raum niederzubrennen und neue Kleidung zu kaufen. In der Realität ist dies normalerweise nicht der Fall, aber es scheint so zu sein, und psychologische Effekte werden es zehnmal schwieriger machen, die Sache anzugehen.
Und natürlich haben Sie nur eine begrenzte Auswahl, wenn Sie in ein Projekt eintreten, das bereits ein riesiges, mehrfach redundantes Durcheinander darstellt.
TL; DR: Im Zweifelsfall Refactor. Sie sollten wirklich gute Beweise haben, bevor Sie sich dagegen entscheiden.