可能性のある複製:
20万行のスパゲッティコードを継承しました—今はどうなりますか?
私はレガシーコードを扱っています。いくつかのBIGクラス(行数8000+)といくつかのBIGメソッド(行数3000+)が含まれています。これらのメソッドの1つについて、少なくともいくつかのコードをカバーする単体テストを作成しました。この関数には特定の構造はありません。ネストされたループと条件の混乱です。リファクタリングをしたいのですが、どうすればよいかわかりません。
私は実際には1つの関数を抽出することから始めました。最終的には21個のパラメーターが必要でした:-/
したほうがいい ...
1。長期的には私が成功することを知って、ひどい関数を抽出し続けますか?
2。さらに大きな関数の抽出を開始しますか?そこで、このモンスターの構造を公開し、実際のリファクタリングを開始できます。
3。私がhelluvaクリーンなコーダーだからといって、小さな「良い」関数(および/またはクラス)だけを抽出するのですか
4。まったく違うことをしますか?
リファクタリングは、本全体について書かれたものです。すべての方法と落とし穴を再説明することは困難です。
この後、他のすべての(ビッグワン)ピースで何を実行する必要があるかを理解します。全体が明確になったら、より高いレベルの再設計を行うことができます。
追伸簡単なスケッチです。リファクタリング自体については、いくつかの本(M. Fowler-リファクタリングなど)を読むことをお勧めします。
Code Completeでは、レガシーコードとそれを使用する新しいコードの間にインターフェイスまたはラッパーを作成することをお勧めします。インターフェースをクリーンに保ち、レガシーコードに変更を加える必要がある場合は、必要な部分をリファクタリングまたは書き直して、それらを前進させます。
十分な変更を加える必要がある場合は、最終的にクラスが新しいコードと同等の状態になります。