これは設計上の問題です。Pojo内での検証
私は私の質問はmemberVariableコンストラクタパラメータの検証中にどこまで私たちが行くことができている
class MyPOJO {
private String memberVariable;
MyPOJO(String memberVariable) {
validate(memberVariable);
this.memberVariable = memberVariable;
}
}
、同様に定義されたPOJOクラスを持っています。次のvalidateメソッドの独自の実装が許容される、POJOのコンストラクタで厳格なチェックを行っているの背後にある
private validate(final String memberVariable) {
Validate.isNotNull(memberVariable); // this is basic check.
Validate.isTrue(memberVariable.indexOf(" ") == -1); //again a basic check.
List<String> validValues = DBFactory.getDB().getValidValues();
Validate.isTrue(validValues.contains(memberVariable)); // checks if the memberVariable value is present in db.
}
引数は、私たちがMyPOJOインスタンスは、任意のランダムなmemberVariableを使用して作成されることはありませんことを確認することができますということです。 私の質問は、これが良いデザイン体系であるかどうかです。検証ロジックをPOJOから一括して引き出す必要がありますか?
OPは、正当な引数の例外がスローされたことを覚えていれば、検証チェックのためにapacheライブラリを使用していると思います。 – Scorpion
@Scorpion commons-lang 3では、彼らは事実上何の理由もなくNullPointerExceptionをスローするようにnotNullを変更しました(Jiraの問題「固定」は長期間にわたって固定されないため閉鎖されました)https://issues.apache.org/ジラ/ブラウズ/ LANG-52? – MetroidFan2002
1. IllegalArgumentException(実行時例外)。提供されている値がリストにない場合、* runtime *で例外がスローされることはクライアントには分かりません。もちろん、それを文書化することもできますが、クライアントが値のリストを知らないと、最初にpojoをどのようにインスタンス化できますか?ユニットのテスト方法は? –