2024年02月08日

質問者さん

ドメインモデル貧血症について質問したいです。 バリデーション以外のビジネスロジックが無いマスタデータのようなものをエンティティ化するのはドメインモデル貧血症でしょうか。 例えば、他の集約からID参照される「部署」のようなエンティティを作りました。 プロパティはid, nameのみで、 ドメイン知識としては名前の文字数チェックと名前の変更があります。 上記のようなgetter、setterしか持たないエンティティはドメインモデル貧血症にあたるのでしょうか? また、このようなエンティティが存在するのは設計が悪いのでしょうか?

2024年02月15日

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイルさん

ドメインモデル貧血症は、「getter/setterしかない」ではなく、「そこに書くべきドメイン知識がクラス外にかかれている」と捉えましょう。 文字数がドメイン知識であればバリデーションもそこに書く必要があります。部署クラス、もしくは部署名クラスに実装しましょう。そうでなければ、ユースケースごとに文字数が異なる(たとえば、新規作成時とこうしんじで異なる)ようなことが発生する可能性が生まれてしまいます。 本当にそこに書くべきドメイン知識が他にないのか?という観点も考えて見るためには、具体的な値を記載してモデリングして見るといいでしょう。モデリングのやり方はこちらの動画、本を見てみてください! https://www.youtube.com/live/HgtCKlOzRiQ?si=2BTklVOQkOYgGPCY https://little-hands.booth.pm/items/3363104

松岡@ログラス/DDD,アジャイルさんに 質問してみましょう!

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイル

DDDや設計にお困りの方はDMにてご相談ください。講義、モブモデリングやコーディングなどご要望に合わせた進め方でサポートします(オンライン)。 YouTube: https://www.youtube.com/channel/UCbHtbIUxtfGjrDy1WcqxExw

松岡@ログラス/DDD,アジャイルさんが

最近答えた質問

03月31日

続き質問

ご回答ありがとうございます! ドメインモデル図から一通りドメインのクラスを実装して次はインフラ層の実装をしようと思ったときに感じた質問でした。あるユースケースではこのオブジェクトは更新するけどこっちは更新しない。となると集約を分けたほうがインフラ層の実装は楽になりそうだ。ただ、ドメインの知識としては大きな集約の理解のほうが直感的ではある。みたいな場面で悩んでおりました。

03月27日

集約の見つけ方について質問です。集約を大きな範囲にした時に、インフラ層の実装がつらくなってきたと言う状況は、集約の範囲を見直すサインになりますでしょうか? あるいは実装が辛いのは技術力不足と捉えるほうが自然でしょうか?

03月18日

factory メソッドについて教えていただきたいです。 ある entity が 別の entity のfactory メソッドを持つことはありでしょうか?