設計の基本は常に、
  モジュール凝集度は高く、
  モジュール結合度は下げる
事にある。

ダメな例の典型は規模によって凝集度が変わる事を理解出来ていない事だ。

例えばjavaの1クラス、1ファイルの思想があるとする。この状況でステートパターン等で1ステート毎にクラス分けしたとする。

仮に30ステートあり、各クラス内部のソースコード(例えば1,000行)が密接に連携し、逆にクラス間の結合度は低く、クラス毎に担当者を分けて並行して実装出来る状況であれば、これは素晴らしい設計だ。

しかし1ステートが実質10行ぐらいしか無ければどうだろう。コンストラクタやお決まりの定形処理に引きずられて、全体で見ると、1ファイル300行にまとめた時より凝集度は下がるだろう。

定形処理を変更しなくてはならない場合、規模が小さいと相対的に変更量が増えるため凝集度が下がるのだ。