Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mdk-aza/45386816a42e8f4bc33334d3ebbbb08d to your computer and use it in GitHub Desktop.
Save mdk-aza/45386816a42e8f4bc33334d3ebbbb08d to your computer and use it in GitHub Desktop.
メソッドの抽出
ひとまとめにできるコードの断片がある。
コードの断片をメソッドにして、それに目的を表すような名前をつける。
メソッドのインライン化
メソットの本体が名前をつけて呼ぶまでもなく明らかである。
メソッド本体を呼び出し元にインライン化して、メソッドを除去する。
一時変数のインライン化
簡単な式によって一度だけ代入される一時変数があり、それが他の
リファクタリングの障害となっている。
その一時変数への参照をすべて式で置き換える。
問い合せによる一時変数の置き換え
式の結果を保持するために一時変数を使っている。
式をメソッドに抽出する。一時変数へのすべての参照を新たなメソッドに置 き換える。これにより新たなメソッドが他のメソッドでも使えるようになる。
説明用変数の導入
複雑な式がある。
その式の結果または部分的な結果を、その目的を説明する名前をつけた一
時変数に代入する。
一時変数の分離
何回も代入される一時変数があるが、それは、ループ変数でも一時変数を
集める変数でもない。
代入ごとに別の一時変数に分ける。
パラメータへの代入の除去
パラメータへの代入が行われている。
一時変数を使う。
メソッドオブジェクトによるメソッドの置き換え
メソッド自身をオブジェクトとし、すべてのローカル変数をそのオブジェ
クトのフィールドとする。そうすれば、そのメソッドを同じオブジェクト
中のメソッド群に分解できる
アルゴリズムの取り替え
アルゴリズムをよりわかりやすいものに置き換えたい。
メソッドの本体を新たなアルゴリズムで置き換える。
トピック
名前大事だよー
値渡しと参照渡し
コマンドクエリ分離原則(CQS)は副作用を抑える
CQS: 「あらゆるメソッドは、アクションを実行するコマンドか、呼び出し元にデータを返すクエリかのいずれかであって、両方を行ってはならない。これは、質問をすることで回答を変化させてはならないということだ。」
http://d.hatena.ne.jp/asakichy/20090506/1241565433
http://kokudori.hatenablog.com/entry/20130206/1360170983
http://d.hatena.ne.jp/m-hiyama/20101216/1292469108
https://gist.github.com/yoppi/e859a7a5f4d317223901
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment