More Related Content
Similar to QCon Tokyo 2013 (20)
QCon Tokyo 2013
- 5. 開発の難しさ
• 複雑さ
– 権限、状態、区分、… 組み合わせ
– 例外規定、救済ルール
• あいまいさ
– ビジネス=人と人との相互作用
– 決め事・調整ごとの積み重ね
– 暗黙の前提
• 不確実性
– ビジネス環境の変化
– 事業の変化
– 人の異動、組織の変更
- 9. ドメイン層の独立
• 関心事の分離
– 業務の関心事と実装の関心事
– UI、データベース、通信
• 依存関係の逆転
– 他の層がドメイン層に依存
• DIP : Dependency Inversion Principle
– 例:永続化(データベースアクセス)
• ドメイン層でインタフェース宣言:業務のやりたいこと
• データアクセス層で実装:実装技術依存コード
- 24. 業務の言葉をオブジェクトで
プログラミング言語の基本データ型 (Date,String, BigDecimal, Long, …)
をラップした 業務の基本用語ごとのオブジェクトに、
その用語に関するデータとロジックをまとめる。
日付 (時分秒を持たない)
時分(秒を持たない)
翌営業日, 休前日
月末,月初, 四半期, 半期, 年度
期間
有効期限
予定日
期限切れ一週間前のアラート
前日のリマインダ
…
金額
単価
数量,数量単位,換算
消費税,税率,端数処理
合計,小計,総合計
数量割引
キャンペーン価格
季節料金
キャンセルポリシー
…
管理番号,登録番号
取引先コード
取引区分
契約番号
商品番号
型式コード
製造番号
シリアルナンバー
…
用語の粒度=オブジェクトの粒度
- 27. if 文 / switch 文を使わない
• 列挙型(enum)
–区分、種別、カテゴリー、エリア、…
– EventType, StateType, Category, …
– タイプごとの振る舞いを if 文なしに記述
• Strategy/State パターン
• たとえば、「未記入」や「不明」の表現→ MissingObject パターン
• Map, Set
…