purucat’s blog

寿司よ止まれっ!

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 6 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


6章:値オブジェクト〜振る舞いを持つ不変オブジェクト〜

学んだ事

  • 値オブジェクトは6つの特徴がある

    1. 「domain内の知識を計測・定量化・説明している」
    2. 「immutable」(変更を管理する必要がない)
    3. 「概念的な統一体」である。(例:100円通貨は2つのパティ「100」と「円」で意味を持つ)
    4. 「交換可能性」:値を変更したいときは新オブジェクトで交換可(これが不便でエンティティを採用するのはだめ。エンティティは長期に渡って識別する必要があるときのみ使用!)
    5. 「等価性」:各属性すべてが同じなら等価
    6. 「副作用のない関数」:呼び出しは如何なるオブジェクトの状態も変えない
  • 他コンテクストエンティティは、粗結合にするために、値オブジェクトとして新たに用意する。

  • JPY,USD等、通貨はenumとして良く扱うが、これはValue Objectではなく、Standard TypeとVernon氏は呼んでいる。

分からないこと

  • テストを書くとき、値オブジェクトで、自分自身を引数とするコピーコンストラクタを用意する。 <=不変性のテストだろうか。イマイチ具体的例を思いつかない。