ドメインサービスとアプリケーションサービスは分けて考える
#DDD #サービス(Service) #設計 #設計原則
ユビキタス言語に結びつくか
ドメインサービスのメソッドはステークホルダと共有されたユビキタス言語に結びつく
アプリケーションサービスのメソッドは開発者がある程度自由に命名する
関心の対象の違い
ドメインサービスは価値ある知識
アプリケーションサービスは技術的な知識
ステートを持つか
ドメインサービスは持たない
アプリケーションサービスは持つ
但し他システムのアプリケーション層と相互作用するのに必要なものに限る
ビジネスの状況を反映する状態は持たないが、ユーザやプログラムが行う作業の進捗を反映する状態は持つ
やるべき作業を調整するのみで、このレイヤは薄く保つ
実際の処理は、ドメインモデルによって直下のレイヤで実行される共同作業に移譲する
プッシュ通知などの通知機能はどっちなの?
ドメイン知識と関係があるのか?それはユビキタス言語に含まれるのか?という問いをするとよい
関係がないのならアプリケーションサービスに含める
安易にドメインサービスに手を出さないほうがよい
#単体テストの考え方/使い方
アプリケーションサービスはビジネスにおけるユースケース(what)を集めたもの
ドメインサービスはアプリケーションのドメイン知識(how)を集めたもの
Thinking in Redux
アプリケーション = what = dispatch
ドメイン = how = reducer
関連「それがなにか」(What)と「どうするか」(How)の分離