変更を楽に安全にするために
効果の大きかった関心の分離
① ビジネスルール(計算判断ロジック)の記述を独立させる
• 計算判断ロジックの複雑さ=アプリケーションの複雑さ
• 計算判断ロジックを分離できれば他の部分は単純化・定型化できる
② ビジネスアクション(通知・記録・計算判断の実行)の関心事と
ビジネスルール(計算判断ロジック)の記述を分離する
③ ビジネスの関心事の記述にデータベース操作を持ち込まない
④ 画面のごちゃごちゃ感(関心の混在)をクラス設計に持ち込まない
Slide 14
Slide 14 text
計算判断ロジック(ビジネスルール)
を扱うクラスの設計
実践的で役に立つオブジェクト指向プログラミング
① 型(ビジネスで扱う値の種類)によるモジュール化
② カプセル化(インスタンス変数とメソッドの強結合)
③ 宣言的に記述(イミュータブル)
④ 業務の関心事で抽象化(パッケージ名・クラス名・メソッド名・変数名)
テーブル設計のやり方
事実を記録するテーブル(主)
① 事実の発生のタイミングごとのテーブル
② NOT NULL 制約(NULLという事実はない)
③ 更新・削除不可
④ 外部キー制約(事実と事実の関係の記録)
状態を参照するためのテーブル(補助:インデックスやキャッシュと同じ扱い)
① 状態が事実の記録から動的に導出可能であれば補助テーブルは作らない
② 削除あるいは有効性は、事実の記録とは別のテーブルで表現して結合する
③ 最新を表現するテーブル(ポインタ式 or 完全な実体)
共通
① スキーマ名・テーブル名・カラム名を日本語(文書化、スキーマで名前空間の整理)
② 更新日時カラムは作らない(すべてINSERT:作成日時のみになる)