一般的なレシピはありませんが、いくつかの経験則があります(静的に型付けされた言語を想定していますが、それほど重要ではありません)。
1)メソッドシグネチャを見てください。何が入り、うまくいけば出てくるかを教えてくれます。このゴッドクラスの全体的な状態から、これは最初の問題点だと思います。複数のパラメータが使用されていると思います。
2)エディター/ EDIの検索機能を使用して、出口点を決定します(通常、return statement_が使用されます)
あなたが知っていることから、関数がどのような必要のためにテストすると、あなたは何を期待して復帰。
したがって、簡単な最初のテストでは、必要なパラメーターを指定して関数を呼び出し、結果がnullでないことを期待します。それは多くはありませんが、出発点です。
それから、解釈学のサークル(HGガダマーによって造られた用語-ドイツの哲学者)に入ることができます。ポイントは次のとおりです。これでクラスの基本的な理解が得られ、この理解を新しい詳細な知識で更新し、クラス全体の新しい理解を得ることができます。
これを科学的方法と組み合わせます。仮定を行い、それらが成立するかどうかを確認します。
3) 1つのパラメーターを取得して、クラス内で何らかの形で変換されている場所を確認します。
たとえば、私と同じようにJavaを使用している場合、通常はゲッターとセッターを確認できます。検索パターン$objectname
。(または$objectname\.(get|set)
Javaを使用している場合)
これで、メソッドが何をするかについて、さらに仮定を行うことができます。
メソッドを介して、入力パラメーターのみ(最初に)をトレースします。必要に応じて、いくつかの図または表を作成し、各変数に対するすべての変更を書き留めます。
それから、メソッドの動作を説明する追加のテストを書くことができます。あなたは、各入力パラメータがどのようにされてラフに理解している場合変換方法に沿ってを、実験開始:nullを渡し一つのパラメータまたはのために奇妙な入力。仮定を立て、結果を確認し、入力と仮定を変更します。
これを一度行うと、メソッドの動作を説明する「トン」のテストができます。
4)次のステップでは、私は探します依存関係:そのほかの方法の必要性はないものを入力して正常に動作しますか?それらを削減または再構築する可能性はありますか?依存関係が少ないほど、最初の分割を行うポイントが明確になります。
5)そこから、リファクタリングパターンとリファクタリングパターンを使用して、リファクタリングの道全体を進むことができます。
ここで素晴らしいVid:GoGaRuCo 2014-トラブルシューティングの科学的方法トラブルシューティングについてですが、何かがどのように機能するかを理解する一般的な方法論には役立ちます。
あなたは、呼び出された関数に入力パラメーターがないことを述べました:この特別なケースでは、最初に依存関係を特定し、それらをパラメーターにリファクタリングして、好きなようにそれらを入れ替えることができるようにします。