【プログラム】リファクタリング

■ はじめに

リファクタリング

 * プログラムの外部仕様を変えずに、内部構造を分かりやすく変更すること

■ Duplicate Code (重複したコード)

解決方法

 * Extract Method
  => 重複した処理をメソッドに抽出する

■ Long Parameter List (長い引数リスト)

解決方法

 * Introduce Parameter Object
  => 様々な場所で繰り返し利用される引数を、パラメータオブジェクトとして抽出する

■ Lazy Class (怠惰なクラス)

 * 役割を持たない状態になっているクラス

解決方法

 * Inline Class
  => 繰り返しリファクタリングをした結果、あるクラスの処理が殆どなくなってしまい、
     クラスを分割しておく理由がなくなってしまった場合などに、クラスをインライン化する

■ Speculative Generality (不確かな一般性)

 * 不確かで・本当に必要になるか分からない一般化(抽象化)がある状態

解決方法

 * Remove Parameter
  => 必要なものは必要になってから追加した方が好ましい(※)ため、現状使われていない引数を削除する

 ※YAGNI
http://blogs.yahoo.co.jp/dk521123/34022115.html

Alternative Classes with Different Interfaces (クラスのインターフェースの不一致)

解決方法

 * Rename Method
  => 同じ目的にも関わらず、メソッド名が異なる場合は名前を揃える