バリデーションロジックの一般原則
1. 原則
原則1: データの静的な内容は入力に近いレイヤーでチェックせよ
- データの形式や範囲のチェックなどは入力を受け付けるレイヤーでチェックする
- WEBアプリケーションで言えばコントローラ層、フロントエンドであればビューあるいはビューモデルあたり
- チェックすべき内容:
- 入力形式のチェック(文字コード、データフォーマットなど)
- 必須入力項目のチェック
- データの範囲チェック(数値の範囲、入力上限など)
- 定義済みの選択範囲(選択可能項目の範囲など)
- など
原則2: データの状態や外部システムに依存する条件はドメインレイヤーでチェックせよ
- データの状態(データの存在有無)や外部システムが管理するデータは、プログラムが保証するべき条件ではない
- 入力時には確定しない条件を入力レイヤーでチェックすることは不適切である
- したがって、状態依存のデータのチェックはドメイン層でチェックする
- チェックするべき内容:
- 選択したデータがDBに存在するか
- データの状態によっては選択できない項目
- 処理対象のファイルやレコードの存在確認
- など
2. 根拠
- 入力値の時点で処理が継続できないことが明白であれば、ドメイン層まで処理を渡す必要がない
- ドメイン層での入力形式チェックは(時として)ノイズになる
3. 指針
4. 注意事項
参考資料