あなたの腸がリファクタリングを行うべきだと言っているとき、それはあなたの本能があなたにあまりにも長い間重要な何かを先送りしていることを少し遅く告げている可能性が高いです。
私は「コード臭」、赤緑リファクタリング、その他の考えを理解していますが、リファクタリングに最適なのは、コードを最初に書くのではなく、コードを使用して2回目または3回目にすることですそれは実際に問題であり、実際に使用されていることです。
リファクタリングには事実上2つのレベルがあります。1つ目は、最初のコーディング時に現れる明らかな問題です。これらは、前もって行うコストが非常に少ない小さな最適化です。メソッドとクラスを小さく保つこと、DRYとSRPに準拠することなど。次に、設計の主要な欠陥に対処する追加の段階があります。これは、コードが数マイル下になるまですぐに明らかにならない場合があります。話しているのはこの2番目のレベルですが、後でリファクタリングするのにコストがかかりすぎないようにするために、後で想定する労力がより簡単に、より安価になるようにコードを既に記述している必要があります。つまり、早期リファクタリングを行うことを意味します。
ジェフが回答で述べたように、「時は金なり」、特に作業負荷が高く、リスクがさらに高い企業ではそうです。コードが最適な状態にあることを確認するために前もって費やした時間は、後で簡単にリファクタリングすべきであったものをからかうことが主要な操作であることが判明したときに、時間を節約できます。
ソフトウェアを作成するとき、コードを前もって改善することに費やされるすべての瞬間は、後で本当に必要になるときに時間を節約できます。リファクタリングが早いほど、後の変更が明確になります。それは、将来の技術的負債に対して今日のドルで頭金を支払うようなものであり、将来の技術的な負債は、明日の膨らんだドルになるでしょう。
いずれにせよ、リファクタリングは、ソフトウェアが既に完全で安定している不思議な未来まで延期するタスクであってはなりません。それは、賭け金がはるかに高くなり、製品を変更するのがはるかに難しくなると、後でリスクが増加するためです。リファクタリングはあなたの毎日の活動の一部であるべきであり、これはあなたが言及したレッド・グリーン・リファクタリングの哲学の本質です。