リファクタリングは部屋を拾うようなものです。
物事を整頓すると、コードに対して行っている生産的な作業の量に比例した線形のオーバーヘッド、アルゴリズム学者の用語ではO(n)があります。リファクタリングに10%の時間を費やす(または部屋を整頓する)と仮定すると、その10%は与えられたものであり、時間が経っても一定のままです。
ただし、汚れた服を隅に投げてやり続けると、混乱が複雑になるにつれて、部屋を拾うのに費やす時間は長くなります。汚れた洗濯物の個々の部分が必要なクリーンアップ時間に指数関数的に寄与すると仮定すると、あなたは今、O(e n)状況にいます。
アルゴリズムの複雑さの概念を掘り下げた経験のある人なら誰でも、損益分岐点がどこかにある、つまり蓄積するのに最適な量の汚れた洗濯物があることに気付くでしょう。それがいくらであるかは、big-O表記で破棄される定数因子に依存します。もう1つの要因は、時間の経過に伴う作業の価値です。作業が今はかなりの価値があるが、来週は安い場合(つまり、この金曜日にこのプロジェクトとさらに3つの期限がありますが、その後はほとんどアイドル状態になります) )、方程式はリファクタリングしない方が良いかもしれません。
そして、複雑な臨界質量があります。ある時点で、混乱(「重大な混乱」)がひどくなり、部屋全体を燃やして新しい服を買う方が簡単に見えるようになります。現実には通常そうではありませんが、そのように見え、心理的な影響により物事に取り組むのが10倍難しくなります。
そして、明らかに、既に巨大な多重冗長の混乱であるプロジェクトに足を踏み入れた場合、選択肢は限られています。
TL; DR:疑わしい場合は、リファクタリングします。しないと決める前に、本当に良い証拠があるはずです。