現場で役立つシステム設計の原則
メモ
1. 小さくまとめてわかりやすくする
プログラムは必ず変更される
変更が楽になる書き方
わかりやすい名前を使う
目的ごとに変数を用意する
変数を上書きしない
メソッドとして独立させる
コードの重複を防げる
クラスを独立させる
値の範囲を適切に制限する
値オブジェクト(Value Object)
例:100までの整数を扱える Quantity クラス、電話番号用の Telephone クラス
コレクションオブジェクトで複雑なロジックを集約して整理する
2. 場合分けのロジックを整理する
場合分けのロジックをメソッド化する
例:isChild()
else 句をなくす
早期リターン(ガード節)
インターフェースを利用
3. 業務ロジックをわかりやすく整理する
データとロジックを分けない
データクラスは手続型の書き方なので使わない
クラスはデータの入れ物ではない
クラスにデータ(インスタンス変数)とロジック(メソッド)をまとめる(ドメインオブジェクト)
メソッドでは必ずインスタンス変数を使う
処理対象のデータを持つクラスにメソッドを書く(使う側に書かない)
ドメインオブジェクト
関連する業務データと業務ロジックを1つにまとめたオブジェクト
ドメイン:対象領域、問題領域
業務単位で分ける
ドメインモデルに業務ロジックを集める
ドメインモデルは画面やデータベースの都合から独立させる
4. ドメインの考え方で設計する
利用者の関心事とプログラミング単位を一致させる
分析と設計が必要
分析:人間のやりたいことを正しく理解する
設計:人間のやりたいことを動くソフトウェアとして実現する方法を考える
同じ人がやるべき
業務で使う用語をクラス名にする