こちらの記事への反応です。
違う。値オブジェクトとはID以外で等価判定をするオブジェクトの事であって、RubyのHash、Pythonのdict、C++のstd::unordered_setすらも値によって等価判定を行うのでこれらは値オブジェクトであるがドメイン固有型ではない
RubyのHash、Pythonのdict、C++のstd::unordered_setは、アプリケーションのドメインからみるとインフラストラクチャに見えるかもしれません。
しかし、RubyのHash、Pythonのdict、C++のstd::unordered_set であっても、解決する問題領域(ドメイン)があります。なので、そのドメインにとっては、ドメイン固有型(=ドメインオブジェクト)である、と解釈しています。(ドメイン固有型の”固有”が紛らわしかったかもしれませんが…)
型クラスを既存の値型にバリデーションを足すために使う人を見たことが無いけれど(やりたいことは素直なのだから素直にif文やクラスを作るほうがまだわかる)Scalaだとよくある文化なのかしら?
単にバリデーションを追加するためだけにこういうことをするわけではないです。ドメインモデルに実装を対応づけるために定義するという意味でした。
コダックさんのツイートには返信済みでしたが、こういう解釈をしています。
DateやPointが扱う問題ドメインがあるはずなので、矛盾はしないと考えています。
— かとじゅん (@j5ik2o) 2022年5月17日
追記: 5/19 17:13
Evansさん作 Time and Money Code Library(もうメンテされてないけど…)。彼は値オブジェクトのライブラリと言っている。こういう共通性のあるライブラリでも、ドメインはあると思うんだけどね。https://t.co/HSm57PT0LZ
— かとじゅん (@j5ik2o) 2022年5月19日