機能を再編成
基本的なスキルの再構築:前方に小さなステップ、頻繁にテスト
1.抽出法(精製機能)
Q:あなたが一緒にグループ化することができ、コードの一部や独立性を持っています
:別の関数にコードし、関数の関数名の使用を説明します。
粒子サイズの関数が小さい、それは再利用する絶好の機会であり、簡潔な、しかし、よく名前の関数は、より高いレベルの注釈のシリーズのような機能を行います。きめ細かい上書き機能が容易になります。
関数名と機能との間の意味的距離は、本体の長さを決定します。
実践:
- 新機能、機能という名前の意図を作成する(むしろそれを行う方法よりも、何をしますか)
- 新しい目的関数をソースからコピーされた抽出機能コード
- 慎重に、精錬コードをチェックリファレンスローカル変数や関数のパラメータのソースをチェック
- そこだけのコードセグメントを洗練されるように、一時的な変数を使用し、そうであれば、新しく作成された中に目的関数の一時的な変数として宣言されたかどうかをチェック
- 変更を考えることができる任意のローカル変数があるかどうかを確認するために洗練されたコードセグメントをチェック
- コードセグメントは、洗練されたクエリ関数として処理され、関連する変数に割り当てられた値を返します
- 使用スプリットに一時変数を、複数の一時変数を作成します
- 使用するクエリで温度を置き換え、クエリ機能の代わりに、一時的な変数
- ローカル変数は目的関数に渡されたパラメータによって読み取られる必要があります
- すべてのコールを交換します
2.インライン法(インライン)
Q:同じように、明確かつ理解しやすい体や関数の名前
:その後、機能を削除し、体内の関数呼び出しポイント関数を挿入
間接の助けを持って、常にではないが、必要な間接不快ことがあります。
組織非合理的な機能は、大規模なインライン関数にして、移行または抽出することができます。
実践:
- 彼らは機能の多型を持っているかどうかをチェックします
- すべてのコールのサイトを探します
- 関数呼び出しサイト本体を交換してください
- 関数定義を削除します。
3.インライン温度(一時的なインライン変数)
Q:あなたは、一時的な変数は、簡単な式で一度しか割り当てられていますが、それは、他の再構成技術を防止します
:変数アクションへのすべての参照は、その温度自体表現を交換してください。
この再構成技術の他のサービス、よう再構築するために、通常はクエリに置き換え温度をや、メソッドを抽出します。
実践:
- 式は副作用を持たないことを確認してください
- 再チェックするように割り当てられていない最後のための一時的な変数
- 一時変数の基準点を見つけ、式を置き換えます
- 文と一時変数の代入文を削除します
4.(一時変数を置き換えるために、クエリ)クエリで温度を置き換え
Q:あなたのプログラムの一時的な変数に計算式の結果を保持します
A:別の関数を抽出するために、この表現は、すべての一時変数の基準点は、新しい関数の呼び出しに置き換えられます
一時変数を既存の彼らは一時的なもので、現在の関数が属する範囲内のみで使用することができるということです。クエリに一時変数を交換する場合は、同じクラスのすべての機能は、この情報にアクセスすることができます。
実践:
- のみ割り当てられている一時的な変数を見つける(複数回割り当てられている場合、最初に使用するスプリット一時変数は、複数のカテゴリに分かれて)
- 最終の変数を宣言します。
- 等号の右辺を精製すると、クエリ機能の一部であります
- 可変実装インライン温度
循環に持ち込ま統計のタイプに一時変数は、また別のクエリ機能を必要とするために、一時的な変数の数は、複数のサイクルにつながります。
変数(組み込まれた説明変数)を説明する5 Intruduce
Q:あなたは、複雑な式を持っています
A:複合体の発現(またはその一部)の結果は、変数名の使用を説明するために一時的な変数式に配置されます。
一般的に、条件付きロジックで使用されるこの再構成技術、特に複雑な特に長い決意条件式は、条件節は、対応する条件句の意味を説明するだけでなく名前の一時変数に洗練することができます。
実践:
- 最終的に、一時的な変数を宣言し、複雑な式のアクションの操作部の結果は、それに割り当てられています
- 一時変数を置き換えるために、操作の結果
- 他の部分に繰り返し
6.スプリット一時変数(分解一時変数)
Q:あなたのプログラムが複数回、一時変数にコピーされているが、それはループ変数や結果を収集するために使用することもありません。
:各課題について、対応する独立し、一時変数を作成します。
一時変数は、より多くの責任を引き受けた場合、それ以外の場合は、読者が混乱して行います、一時的な変数の数に分け交換する必要があります。
実践:
- 新しい一時変数はfinalとして宣言しました
- 、部門のためのアクションを割り当てる新しい一時変数のためのオリジナルの一時変数の参照を変更するために第2の一時変数
- 第二に、元の割り当てに一時変数を再宣言
- この操作は、次の割当の前に名前を変更し、変更の基準点で、文のたびに繰り返されます
7.パラメータを(パラメータの割り当ての除去を)割り当てを削除
Q:コード指定パラメータ
:一時変数パラメータの置換位置に
鮮鋭度を低減するパラメータコード割り当て、ミックス値またはパラメータ通過の基準パス二種類によって渡されます。パラメータ割り当ての値によって渡されたパラメータに影響を持つことができません。
実践:
- 処理されるように、それにパラメータを割り当てるための一時変数の確立
- 部門、すべての一時変数置換のための基準点に対するパラメータの割り当てに
- 割り当てを変更し、一時的な変数に代入
8.メソッドオブジェクト(機能を置換する目的関数)を用いる方法を置き換え
Q:あなたは抽出方式を採用することができないように、ローカル変数を使用する大規模な機能を持っています
:1つのオブジェクトに関数が、結果はオブジェクトフィールド内のローカル変数になり、することができますし、同じオブジェクト内の小さな主要な複数の機能にこの機能。
分解のローカル変数度関数が増加し、全体の機能がオブジェクトに変換することができ、オブジェクトがローカル変数フィールド、その後さらに分割関数となるがあります。
実践:
- 新しいクラスを作成します。
- 新しいクラスは、元の関数の各一時的な変数やパラメータのための対応するフィールドを作成し、ソースオブジェクトを保持しています
- 建物の機能を構築
- 計算機能の確立
- コピー元の関数を計算する機能、およびソースオブジェクトの他の関数への呼び出しを置き換えます
- 計算機能の新しいクラスとして古い機能を交換してください
9.代替アルゴリズム(置き換えアルゴリズム)
Q:あなたは、アルゴリズムを交換するには、別のアルゴリズム明確です
A:関数が別体アルゴリズムに置き換えられています。
ちょうどそれを置きます!