2018-12-19 メソッドの引き上げ【リファクタリング】 リファクタリング 状況 同じ結果をもたらすメソッドが複数のサブクラスに存在する。 対処 メソッドをスーパークラスに移動する メリット メソッドの修正もれリスクを下げる事ができる 手順 対象とする複数メソッドの内容が同じである事を確認する メソッド間でシグニチャ(引数や返り値など)が異なる場合は、スーパークラス上への移動を見越して変更する スーパークラスに新しいメソッドを作成する。一つのメソッドから内容をコピーして、必要に応じて修正を行いコンパイルする 各メソッドの中で用いられているメソッドに、処理内容の異なるものがある場合は、スーパークラス上で抽象メソッドとして宣言し、オーバーライドする メソッドがサブクラスのフィールドを使用している場合、「フィールドの引き上げ」を適用するか、「自己カプセル化フィールド」を適用して抽象getメソッドとして宣言して使用する サブクラスのメソッドを一つ削除する コンパイルしてテストする スーパークラスのメソッドのみとなるまで、サブクラスのメソッドの削除とテストを続ける 楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本