絶対に。
リファクタリングは、作業中の「合格」プロジェクトで実行する必要があります。すべてのテスト(ユニット、システム、および受け入れレベル)に合格すると、製品が要件を満たしていることがわかります。リファクタリングすると、すべてのテストが引き続き合格することを確認できます。いずれかのテストが失敗し始めた場合、あなたは何か間違ったことをし、それを修正する必要があります。テストに失敗した場合は、リファクタリングの前にそれらを修正して、リファクタリングがシステムの機能を変更しないことを常に確認できるようにする必要があります。
また、これはリファクタリングを実行する時間とリソースがあり、それでも時間と予算内で納品できると仮定すると、リファクタリングに最適な時期です。リファクタリングにより、システムの理解と保守が容易になるため、さらに多くの新機能を追加するほど簡単になります。コードの腐敗やソフトウェアのエントロピーと戦う必要があります。
ジョエルEthertonはコメントで指摘し、あなたがリファクタリングの範囲を管理する必要があります。すぐに機能を追加するシステムの部分のリファクタリングに焦点を合わせ、新しい機能の操作や追加を容易にするリファクタリングを実行します。静的分析、メトリックツール、およびコードレビューを使用すると、最も重要な領域を特定できます。リファクタリングを行っていたため、期限を逃したくありません。顧客に付加価値を与え続ける必要があります。
リファクタリングで価値が見られない顧客について言及します。通常、顧客はコードの品質ではなく製品の品質を気にします。リファクタリングにより、高い製品品質を維持し、変化する顧客のニーズを満たす製品を提供し続けることが容易になります。スケジュールにリファクタリングする時間を交渉してみてください(顧客がY日間でXの機能を望んでいる場合、Y + Zの日またはXNの機能を取得できないので、設計、リファクタリング、および実装に時間をかけることができます)できる。