22. I Need To Change Monster Method And I Can't Write Tests For It - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 22章 I Need To Change Monster Method And I Can't Write Tests For It。

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

モンスターメソッドを変更したいんだけどテスト書けないよ。

  • モンスターメソッドの種類
    • Bulleted Method 箇条書きのようなメソッド
    • Snarled Method インデントや条件分岐が複雑なメソッド
  • ツールを使ってリファクタリング
    • ツールでメソッドを分割してみたが位置が悪いかも?
      • 気にせず分割してあとで直そう
    • 変更は1度に1つ
      • 安全な変更と安全かどうか分からない変更を分離できるよ
  • マニュアルでのリファクタリング
    • 良くあるミス
      • 引数を忘れる。コンパイラが教えてくれるよ。
      • override して隠してしまう
      • 代入を見逃す
    • ミス防ぐためには?
      • Sensing Variablesの導入。状態を教えてくれる変数を追加しよう。それらを利用してテストを書く。全てのリファクタリングが終わったら消そう。
      • スタート地点。確信のあるところ。小さいところ。理解しているところ。Coupling Count の少ないものから。(特に0から)
    • Gleaning Method
      • メソッドにメインとサブの役割があり、サブの機能が壊れたらすぐに目で見て分かる場合
      • メインのテストを書く
      • サブを別の場所に分ける。
      • メインが壊れたらテストで分かる
      • サブが壊れても分かる。
    • 戦略
      • いつでもRedo 出来るように備える。リファクタリングするうちにもっと良いExtract思いつくかも。
      • 小さいところから始める
      • 今のクラスにExtractしよう、他のクラスに動かしたくなるがまずはエラーが少なく前進するように。
      • Skeletonize Method。Condition/body を別々のメソッドに分ける。
      • Skeletonize Method の逆もあり。
      • 小さいところから始める。

所感

  • 特になし。

リンク

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


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