ValueObjectの重複

意味的な面でValueObjectを作る指針を出している場合、明らかに同じものを別のValueObjectとしてあげる上げる時がある。

意味的な面での重複

営業部門から見ると、SoldDateだったり DeliveredDateだったりするけどこれは経理的に見ると計上日RecordedDateになる。
で、実際このValueObjectの中に書かれているメソッドはほとんど無い。
疑わしければ別のValueObjectにするというのは一見それで良いのだが、こんな感じで別々の概念となってしまい、同じコードを2か所に書くことになって修正も2か所しないといけなくなる。
DDDでいう変更するコードが一か所になって便利って話とは矛盾することになる。

疑わしさ

疑わしければ別のValueObjectにするというのは意外と壁が高くて、疑わしくない証明するのは悪魔の証明だ。つまり、一度別のValueObjectが出来たらそれは統合できないということを示す。
今回の例では、営業部門と経理部門という二つの部門をまたぐ比較的遠いシステムを上げた。しかし、ユースケースごとに担当者分けをした場合など、別ドメインだという認識で同じ実態のValueObjectが出来てしまう。
これはナンセンスだ!

まとめ

どこか実装する前にドメインをメンバー内で周知し統合するような手順が必要なのではないか?