技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

メソッドの引き上げ【リファクタリング】

状況

  • 同じ結果をもたらすメソッドが複数のサブクラスに存在する。


対処


メリット

  • メソッドの修正もれリスクを下げる事ができる


手順

  • 対象とする複数メソッドの内容が同じである事を確認する

  • メソッド間でシグニチャ(引数や返り値など)が異なる場合は、スーパークラス上への移動を見越して変更する

  • スーパークラスに新しいメソッドを作成する。一つのメソッドから内容をコピーして、必要に応じて修正を行いコンパイルする

    • 各メソッドの中で用いられているメソッドに、処理内容の異なるものがある場合は、スーパークラス上で抽象メソッドとして宣言し、オーバーライドする
    • メソッドがサブクラスのフィールドを使用している場合、「フィールドの引き上げ」を適用するか、「自己カプセル化フィールド」を適用して抽象getメソッドとして宣言して使用する
  • サブクラスのメソッドを一つ削除する

  • コンパイルしてテストする

  • スーパークラスのメソッドのみとなるまで、サブクラスのメソッドの削除とテストを続ける


楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本