ドメインモデル貧血症について質問したいです。
バリデーション以外のビジネスロジックが無いマスタデータのようなものをエンティティ化するのはドメインモデル貧血症でしょうか。
例えば、他の集約からID参照される「部署」のようなエンティティを作りました。
プロパティはid, nameのみで、
ドメイン知識としては名前の文字数チェックと名前の変更があります。
上記のようなgetter、setterしか持たないエンティティはドメインモデル貧血症にあたるのでしょうか?
また、このようなエンティティが存在するのは設計が悪いのでしょうか?
ドメインモデル貧血症は、「getter/setterしかない」ではなく、「そこに書くべきドメイン知識がクラス外にかかれている」と捉えましょう。
文字数がドメイン知識であればバリデーションもそこに書く必要があります。部署クラス、もしくは部署名クラスに実装しましょう。そうでなければ、ユースケースごとに文字数が異なる(たとえば、新規作成時とこうしんじで異なる)ようなことが発生する可能性が生まれてしまいます。
本当にそこに書くべきドメイン知識が他にないのか?という観点も考えて見るためには、具体的な値を記載してモデリングして見るといいでしょう。モデリングのやり方はこちらの動画、本を見てみてください!
https://www.youtube.com/live/HgtCKlOzRiQ?si=2BTklVOQkOYgGPCY
https://little-hands.booth.pm/items/3363104