25. Dependency-Breaking Techniques - Adapt Parameter and Break Out Method Object- WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

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

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

1.Adapt Parameter
メソッドをテストしたいが引数を作れない(HttpServletxxxとか)

  1. インターフェースを作る。シンプルに。
  2. プロダクションクラス実装
  3. Fake実装
  4. Fake利用しテスト書く
  5. 新しいパラメータ使って実装

2.Break out Method Object
大きなメソッドがあり、しかもそのメソッドはインスタンス変数に依存している。そのクラスをテストでインスタンス化するのが難しい。

  1. メソッド保持用のクラスを新しく作る
  2. コンストラクタでメソッドの引数を全てうけとる(Preserve Signature)
  3. コンストラクタで受けた引数をインスタンス変数に保持する
  4. 空のメソッド run つくる
  5. run にメソッドコピー
  6. 元のメソッドで run とか呼ぶ
  7. 必要なら元のクラスで Extract Interface

所感

  • Break out Method Object は例のコードでは何を達成しているのか?
    • テストが難しかった draw をテストできるようにしている

リンク

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


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