Validatorの扱い

| Comments

今日はValidatorをどこのパッケージに入れておくべきか、ということを話していました。

前提条件

  • 変更はパッケージ内で完結するべき。
  • なるべく他のクラスを知らないことが望ましい。
  • クラスは一つの責務だけ持つべし。
  • Validatorには種類がある

以上の条件を元に、なるべく良い設計を考えます。

Validatorの種類について

1 データ型からありえないもの

データとして明らかにおかしいもの(Priceなのに文字列・マイナス値など。)を予め除去しておくもの。

主にDTOの生成時に検証する。

不正なデータが入力されうるのは、ユーザーからのアクセス、外部APIなど。

2 その処理の中ではありえないもの。

その処理の中で存在してはいけないデータの構造(ID値が重複している・アダルトコーナーに18歳未満がいる、など。)

主にServiceの中で検証する。

基本的にはServiceと対になると思われる。

構成案

1はDTOと同じパッケージ

2はServiceと同じパッケージ

とかに入れておくといいのではと思います。

DTOにValidationを知られたくない気もしますが、これは仕方ないかと。

Comments