2009-03-19 4 views
1

私は今、いくつかのコードをリファクタリングする必要があります。それは、計算を多くし、多くの変数を持っている基本的に1つのメソッド(約1000行のコード)です。私はそれをリファクタリングする方法がわかりません。 コードは非常に組み合わせコードのリファクタリング

... 
calculateSth(param1,param2,param3,param4,param5, params6); 
calculateSthElse(param1,param2,param3); 
... 

のように表示されますか?私は、パラメータオブジェクトを導入する可能性

が、これらのオブジェクトは、唯一のいくつかのメソッドへのparamsとして使用されるので、それはこの

... 
calculateSth(calculateSthObject); 
calculateSthElse(calculateSthElseObject); 
... 

か、私は一つの大きなオブジェクト内のすべてのものを入れて

作ることができるようになります。
... 
calculateSth(calculateObject); 
calculateSthElse(calculateObject); 
... 

しかし、その解決策では、メソッドの最初にプライベートメソッドで必要なものをすべて取り出して最後に設定する必要があり、どの値が使用されているかを調べるのはずっと難しくなりますプライベートメソッド。アウトプットとして約半分の変数が必要です。

どうすればよいですか?

P.S.計算は自明ではないので、

calculateObject.setMagicValue4((calculateObject.getMagicValue() * calculateObject.getMagicValue2()/calculateObject.getMagicValue3()) 

のようにすると、読みにくくなるだけです。

答えて

6

アルゴリズムが実際に何をしているかを理解するのに必要な時間を費やすことになります。それから、私がどのようにを実際にの問題を解決するかを調べようと考えています。これはおそらく多くのクラスを含むでしょう。&の概念です。次に、これらの概念を既存のコードに1つずつ導入し、それぞれの概念について適切なテストカバレッジを得るようにしていきます。