DTOのバリデーション処理の位置

入力DTOに対して以下の検証処理をする。

  • Applicatoinレイヤで入力値バリデーション
    • 無効な入力や害のある入力をはじく
  • Domainレイヤでモデルの不変条件検査
    • クライアントに不変条件検査違反を返したい場合、 Domainレイヤにクライアントを意識した違反処理ロジックが入り込むことになるかもしれない。 DomainレイヤでSepcificationを提供して、 Applicationレイヤでそれを使って検査する、という構造にしたほうがよいこともある。