技術向上

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

Template Methodの形成【リファクタリング】

状況

  • 異なるサブクラスの二つのメソッドが、類似の処理を同じ順序で実行しているが、各処理の内容は異なっている

例えば、処理順序や算出対象は同じでも、掛け合わせるレートが異なるなどです。


対処

  • 同じメソッドをオーバーライドできるよう、各処理を同じシグニチャ(引数や返り値など)のメソッドにし、スーパークラスに引き上げる


メリット

  • コード量が削減される

  • 新しい類似した種類の処理を追加するのに、部品となるスーパークラスのメソッドをオーバーライドするだけで済む


手順

  • メソッドを分解し、同一コードの部分、異なるコード部分に明確に分かれるよう、「メソッドの抽出」を行う

  • 異なるメソッドは「メソッド名の変更」を適用して、各メソッドのシグニチャを同一にする

  • シグニチャを変更するたびにコンパイルしてテストする

  • 元のメソッドの一つに対して「メソッドの引き上げ」を適用する。処理の異なるメソッドは、そのシグニチャスーパークラスに抽象メソッドとして定義する

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

  • 残りのメソッドについて、削除・コンパイルとテストを繰り返す


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