/note/social

業務システムはエンティティに振る舞いが無い云々

業務システムでよくあるCRUDなシステムでは、ドメインモデルを抽出してもそのモデルにはほぼ振る舞いがないから、オブジェクト指向モデリングをやってもあまり価値を感じないという話がある。

それ自体は同意ではあるのだけど、モデリングはモデルの振る舞いだけでなく、モデルの制約条件を明らかにすることであることを忘れていると思われる。

CRUDなシステムは基本的にデータの入力・保存・出力が重要な観点になる。したがって、データが制約条件を満たしているかどうかが重要な関心事になる。

つまり、CRUDなシステムにおけるドメインモデルの責務はデータの制約条件や整合性をドメインモデル自身が担保することではないかということである。

ただ、多くのフレームワークではバリデーションは手続き的な考え方で設計されるものが多いので、オブジェクト指向設計とは折り合いが悪かったりするのが難点であろうか。

また、入力項目とDBの項目が一致しているようなシステムの場合は、入力データをドメインモデルに変換する意味が無いので、素直にフレームワークの流儀に乗った方が断然良いということもあったりして、やっぱダメじゃねーかという趣がある。