JUGG CCC 2013 Spring
当日殴り書きメモ
14:15~ Java Small-Object Programming
はじめに
- 9つのルール、DDDなどを総称してSmall-Objectとしている
S-OPって?
APの現状
- FWは安定している(SpringMC、MyBatisなど)
- BLが理解しづらく変更容易性がない。テストしにくい。(1000行、意味不明なクラス名)
- ビジネスの変更への対応 → BLの変更
- システムは変わり続ける
Javaの抱える問題
S-OPの具体例
- プリミティブ型、Stringはすべてラップする。
- String code; って誰が桁数知ってるの?
- Codeクラス。(フィールドクラス)
- Validationもドメインクラスにはかかず、フィールドクラスにかく。
- フィールドクラスを利用しないデメリット
- たとえばStringとした場合、修正箇所を探すこともできない。(shohinCode, shohinCd)
- バリデーション処理が重複。全部直さなきゃいけない。
- 仕様書がないと、商品コードの仕様がわからない。
- フィールドクラスを利用するメリット
- 利用方法と仕様がひとめでわかる
- 検索が楽
- 修正は常に一箇所
- 仕様書がなくても保守が楽。
- 不必要なアクセサは記述しない。
- 不必要なSetterでは? 不変だったりしない?在庫は減らしたり、増やすものじゃない?
- 不必要なGetterでは?
- FWを利用する。
- 例外やログなど、本質的でない処理はSpringなどのFWに。
- close, trycatch, log
9つのルールとDDD
- 設計と実装をみなおす9つのルール
- エクササイズ
- DDD
- ドメイン層 → フィールドクラス
- フィールドクラス → ValueObject
- Employeeクラス → Entity
- DDDやらないといけない?
- S-OPはトランザクションに不向き?
- 所謂、入れポン出しポンのBLがないAPに最適
- 少ないフィールドクラスで実現できる。