Skip to content

Conversation

@littlestarling
Copy link
Owner

No description provided.

  - 新しいメソッドを作成し、メソッドの目的に基づいて名前をつける
    - いかにするかではなく、何をするかを示す名前にする
      - not how, do what
    - 抽出したいコードが単純であっても、新たな名付けによってわかりやすくな
      るならやるべき
  - 変更前のソースメソッドから抽出対象のコードを新しいメソッドにコピーする
  - 抽出したコードの中で、ソースメソッドのローカルスコープの変数が参照され
    ている箇所を探す
    - ソースメソッドのローカル変数、引数
  - 抽出コード内だけで使われている一時変数があるかチェックする。あれば移設
    先のターゲットメソッドで一時変数として宣言する
  - 抽出コードがこれらのローカルスコープ変数の値を書き換えているかチェック
    する
    - 書き換えられている場合には、抽出コードを問い合わせメソッドとして扱っ
      て、戻り値をその変数に代入できるか確認する
      - そのような変数が複数ある場合は一時変数の分割を試してから再抽出を行
        うなどする。一時変数から問い合わせメソッドも使える
  - 抽出したコードが読み出しているローカルスコープの変数をターゲットメソッ
    ドの引数として渡す
  - ソースメソッドの抽出されたコードの部分をターゲットメソッド呼び出しに置
    き換える
    - ターゲットメソッドに移された一時変数がある場合には、抽出したコードの
      外でそれが宣言されているかどうかをチェックする。宣言されている場合、
      その宣言を取り除くことができる
  - テストが通ることを確認する
  ローカル変数がない場合、単純に処理の目的をわかりやすくしたメソッド名をつ
  けてコードを移設する
  - 代入ありパターンの移動
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants