- 機能分解(functional decomposition)は手続き指向型言語では有効
- しかし,オブジェクト指向言語には適さない
どんな問題?
- オブジェクト指向言語なのに手続き指向のコードができあがる
- オブジェクト指向を理解してない人が設計・実装した場合におきる
- そういう人の特徴
- main関数が好き
- すべてのサブルーチンにクラスを作る
- クラス階層を無視する
症状と結果
- 機能を表す名前をもつクラスがある
- たとえばCalculate_interestとかDisplay_tableとか
- 全クラスの属性がprivateになっており,内部からしか使えない
- 1つの関数しかもっていないクラスがある
- オブジェクト指向原則に従ってない
- システムがどう動くか説明できない
- テスターのイライラや絶望が伝わってくる
原因
どう解決する?
- クラス群に下記のガイドラインを適用する
- 1つの関数しか持たないクラスがあれば,既存クラスの一部にできないか検討する
- 幾つかのクラスを設計の目的にあうよう,新しいクラスに統合する
- 状態をもたないクラスであれば,クラスを関数として記述する
yusuke-ujitoko.hatenablog.com