現在、Java 用の小さな引数チェック ライブラリを作成しています。チェックは、次のような流暢なインターフェイス方法で記述されます。
Check.that(name).matches("hello .*!").hasLenghtBetween(0, 20);
Check.that(list).isNullOr().hasSize(0);
Check.that(args).named("arguments").isNotEmpty();
これまでのところ、これらのチェックのセマンティクスは、引数が null ではないことも暗黙的にアサートするというものです。null を許可するisNullOr()
には、2 番目の例のように修飾子メソッドを使用できます。
次に追加したいのは、次のようなチェック反転のサポートです。
Check.that(name).not().matches("hello .*!");
しかし今では、デフォルトの nullness 処理が奇妙で直感的ではなくなっていると感じています。テストを逆にする正しい方法は、null を許可することです。null を禁止するには、isNotNull()
チェックを明示的に追加する必要があります。
Check.that(name).isNotNull().not().matches("hello .*!");
このため、null 性を常に明示的にチェックする必要があるようにセマンティクスを変更することを考えています。私はこれを行う 1 つのプロジェクトを知っています: Bean Validation。ただし、null は無効な引数であることが多いため、これによりおそらくチェックの約 90% が 12 文字長くなるという欠点があります。
では、長い話を簡単に言うと、暗黙の null チェックの賛成意見と反対意見は何ですか? たぶん、これまたは他の方法でそれを行う他のライブラリまたは標準がありますか?