パブリック関数の引数を常にチェックし、何か問題がある場合は例外をスローします。(プライベート ヘルパーの場合は、アサーションを使用します)。
このような:
if( a < 0 || a >= b )
throw new IllegalArgumentException("'a' must be greater or equal to 0 and
smaller than b ");
しかし、これらのエラーメッセージを書くのはいつも私を悩ませます. メッセージはステートメントの否定にすぎないため、メッセージは冗長に思えます
a < 0 || a >= b
.
また、(Eclipse で) リファクタリングを使用して変数の名前を変更すると、メッセージに変更が反映されないこともよくあります。または、条件を変更して、メッセージを変更するのを忘れています。
次のようなものを書くことができれば、それは素晴らしいことです:
assertArgument(a >= 0 && a < b);
これにより、次のようなメッセージで IllegalArgumentException が発生するはずです。
"violated argument assertion: a >= 0 && a < b."
C では、マクロを記述できます (実際、C では assert は単なるマクロです)。Javaでこのようなことをする簡単な方法はありますか?