20. This Class Is Too Big and I Don't Want It to Get Any Bigger - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 20章 This Class Is Too Big and I Don't Want It to Get Any Bigger。

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

このクラス大きすぎだろ。これ以上大きくしたくないな。

  • 典型的なパターン
    • 変更は微調整が多い。その場にそのままコードを追加する誘惑に負ける。いつしかコードが沼に。
    • 大きなクラスは「多くの行数」「多くのメソッド」「多くのインスタンス変数」「多くの役割」で大事なものを隠す。
  • 大きなクラスにどうやって立ち向かう?
  • 大きなクラスは役割で分割すれば良い。役割分けの方法は?
    • 1.メソッドグループ化
      • 役割や名前でグループ化する。
    • 2.Hidden メソッドを良く見る
      • private/protected は別クラスになる可能性のものが多い
    • 3.中をちゃんと見る
      • 名前に惑わされず隠れた役割を見つけよう
    • 4.内部関係を知る
      • Feature Sketch
      • インスタンス変数を○で描く
      • メソッドから矢印をのばす
      • その図からクラス分け候補を知る。(大きな○や、良い名前が浮かぶグループはクラス候補)
    • 5.一番本質的で大事な役割を見つける
      • SRP: クラスの役割は一つの文で表現できるはず
      • Big Class は一つの文×複数の役割の中からどれが一番大事か決める
      • ISP:メソッドをグループ化して、それぞれにインターフェースを割り当てる。

所感

  • この章はタフだった。
  • 筆者は Chances are という表現大好きだよね。(読んだ人だけ分かる)

リンク

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

Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall
売り上げランキング: 2358