25. Dependency-Breaking Techniques - Pull up Featureなど - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック4つ。

マインドマップから再構成したまとめ

18.Pull up Feature
問題

  • クラスにBD難しいところがあり、テストしたいところはそこと依存関係がない別のメソッドだ

手順

  1. pull up したい部分を特定
  2. ↑を含む abstract class 作る
  3. 実装を↑にコピー。コンパイル
  4. 参照エラーになるものもコピー
  5. ↑のクラスを継承してテストを作る


19.Push down Dependency
問題

手順

  1. テストでインスタンス化しようと試みる
  2. 邪魔なもの特定
  3. ↑をおくための sub class 作る。それっぽい名前で。
  4. ↑をおいてみる。元のクラスでは protected にする
  5. テスト用に sub class つくる
  6. ビルドして確かめる


20.Replace Function with Function Pointer
問題

  • 手続き型言語でテストのために関数入れ替えたい
  • かといって link seam は大げさだ

手順

  1. 置き換えたい関数宣言見つける
  2. 同じ型で同じ名前の関数ポインタ宣言
  3. 元の関数宣言を適切にリネーム
  4. ポインタに代入するコードを書く
  5. ビルドのエラーで関数本体を特定してリネーム
  6. テストではポインタ入れ替え


21.Replace Global Reference with Getter
問題

  • global 参照痛い。

手順

  1. global 参照特定
  2. ↑の getter 作る
  3. getter 参照するように変更
  4. subclass で動作変える

所感

リンク

一人読書会 - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)


Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall
売り上げランキング: 4738
おすすめ度の平均: 5.0
5 設計が悪いシステムの保守でお悩みの方へ