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。
マインドマップから再構成したまとめ
このクラス大きすぎだろ。これ以上大きくしたくないな。
- 典型的なパターン
- 変更は微調整が多い。その場にそのままコードを追加する誘惑に負ける。いつしかコードが沼に。
- 大きなクラスは「多くの行数」「多くのメソッド」「多くのインスタンス変数」「多くの役割」で大事なものを隠す。
- 大きなクラスにどうやって立ち向かう?
- Sprout Class/Method
- リファクタリングして SRP に基づきクラスを分割する
- 大きなクラスは役割で分割すれば良い。役割分けの方法は?
- 1.メソッドグループ化
- 役割や名前でグループ化する。
- 2.Hidden メソッドを良く見る
- private/protected は別クラスになる可能性のものが多い
- 3.中をちゃんと見る
- 名前に惑わされず隠れた役割を見つけよう
- 4.内部関係を知る
- Feature Sketch
- インスタンス変数を○で描く
- メソッドから矢印をのばす
- その図からクラス分け候補を知る。(大きな○や、良い名前が浮かぶグループはクラス候補)
- 5.一番本質的で大事な役割を見つける
- SRP: クラスの役割は一つの文で表現できるはず
- Big Class は一つの文×複数の役割の中からどれが一番大事か決める
- ISP:メソッドをグループ化して、それぞれにインターフェースを割り当てる。
- 1.メソッドグループ化
所感
- この章はタフだった。
- 筆者は Chances are という表現大好きだよね。(読んだ人だけ分かる)
リンク
一人読書会 - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)
Working Effectively With Legacy Code
posted with amazlet at 08.10.21
Michael C. Feathers
Prentice Hall
売り上げランキング: 2358
Prentice Hall
売り上げランキング: 2358