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難しいところがあり、テストしたいところはそこと依存関係がない別のメソッドだ
手順
- pull up したい部分を特定
- ↑を含む abstract class 作る
- 実装を↑にコピー。コンパイル
- 参照エラーになるものもコピー
- ↑のクラスを継承してテストを作る
19.Push down Dependency
問題
- クラス中に一部、テスト時にインスタンス化するのに邪魔
手順
- テストでインスタンス化しようと試みる
- 邪魔なもの特定
- ↑をおくための sub class 作る。それっぽい名前で。
- ↑をおいてみる。元のクラスでは protected にする
- テスト用に sub class つくる
- ビルドして確かめる
20.Replace Function with Function Pointer
問題
手順
- 置き換えたい関数宣言見つける
- 同じ型で同じ名前の関数ポインタ宣言
- 元の関数宣言を適切にリネーム
- ポインタに代入するコードを書く
- ビルドのエラーで関数本体を特定してリネーム
- テストではポインタ入れ替え
21.Replace Global Reference with Getter
問題
- global 参照痛い。
手順
- global 参照特定
- ↑の getter 作る
- getter 参照するように変更
- subclass で動作変える
所感
- なじみのあるテクニックはマインドマップを描くのが楽。
リンク
一人読書会 - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)
Working Effectively With Legacy Code
posted with amazlet at 08.10.24
Michael C. Feathers
Prentice Hall
売り上げランキング: 4738
Prentice Hall
売り上げランキング: 4738
おすすめ度の平均:
設計が悪いシステムの保守でお悩みの方へ