アプリケーションロジックの命名にCRUDを持ち込まない
#命名 #設計原則 #設計
model-actions-as-events-not-setters #TkDodo
命名にcreate, update, deleteなどのCRUDの概念を持ち込むと、変更に合わせて命名とその処理が乖離して重要なドメイン知識が失われることがある
CRUD前後の条件チェックやエラーハンドリングなど
最初は単純なCRUDだったのが仕様理解を通してアプリケーションサービスの責務も持つようになることはよくあり、設計の一貫性を保つのが難しくなる
関心事の分離の観点からビジネスロジックやCRUDの知識は可能な限り末端に隠蔽したい
CRUDは、モジュールの内側に閉じ込める #技術的な知識
create,updateではなく、外側の依存を受け付けるsaveというインタフェースで扱うのが望ましい
Repository
副作用とドメインを切り離す
ドメインイベント(Domain Event )
CRUDを伴う副作用を扱う処理はビジネス要求と合わせた命名にする
イベントに意識が向くため自然と実装詳細(private)を分離する流れが生まれやすい