設計書の項目表をそのままコードにしてバリデーションをする

2016/07/26

インタフェース開発等で必須区分等のバリデーションを大量に行う必要があって、さらにインタフェース機能によって同一項目でも必須と任意が変わる場合、各項目でバリデーションメソッドを呼ぶ度にisNullableかどうか等を考えるよりも、設計書の必須/任意等をそのままコードにした方がシンプルになる。
たとえば、作成機能では必須(not null, not empty)の項目が更新機能では空文字以外の任意(nullable, not empty)になったりする。あるいは何かのフラグが立っているときは必須で、立っていなければ任意など。

機能と必須区分で表を作って、設計書を見ながら全項目について「必須/任意/条件付き必須/空文字以外の任意」を判断してバリデーションのコーディングしてもいいが、各項目について毎回判断するのではなく、設計書の情報をそのままコーディングし、必須区分がバリデーションメソッドの中で自動で求められるようにした方が楽。
感覚としては、各項目に設計情報をattributeとして付与し、各項目自体が、自身がnullを許容するのかemptyを許容するのかを判断できるようにする。

【設計書】

作成
項目 必須 備考
item1 True <3
更新
項目 必須 備考
item1 False <3 空文字は不可

【コード】
前提
// 項目値
String value = "test";
// 作成か更新か
IfType ifType = IfType.CREATE;

設計書の情報をそのままコーディングするパターン

毎回考えるパターン

上のパターンだと、設計書の情報をそのまま書けばいいが、下のパターンはvalidateRequiredの引数でnullを許容していいか空文字を許容していいかを全項目分考えなくてはいけない。

設計書の情報をそのままコーディングするパターンに登場するIfItemDefinition

-Java