Java -アサーション-
アサーション機能を利用すると、バグを早期に発見して修正し、よりエラーの少ないプログラム を作成することができます。
プログラムの任意の箇所に、ある条件が成立するかどうかをチェックするための処理を挿入して おき、その条件に違反している場合は、エラー出力を行うことによって、動作チェックを行います。
アサーションの宣言
assert 条件式; または、 assert 条件式 : 出力する式;
※ 条件式には、trueになるべきboolean型の値を返す式を記述します。
「assert 条件式;」の書式
プログラムの実行時に条件式が評価されます。
本来、結果はtrueになるべきで、この場合はプログラムの実行に何ら影響はありません。
しかし、結果がfalseの場合はAsertionErrorが発生し、プログラムはそこで中断します。
「assert 条件式 : 出力する式;」の書式
AssertionErrorの発生によりプログラムが中断すると、「出力する式」の値が画面へ出力されます。
出力される内容は、System.out.println()でかっこ内に記述した場合と同じ内容になります。
assert文はプログラムのさまざまの箇所に記述でき、複数記述でされている場合は最初にAssertionErrorが発生した箇所で、プログラムは実行を中断します。
アサーションの有効化
javaコマンドの実行時にアサーション機能を有効にするには、javaコマンドに -eaオプション または、-enableassertionsオプションを付けます。
有効化のオプションを指定することにより、有効の範囲をクラス単位またはディレクトリ単位、パッケージ単位で 指定できます。
無効にするには、javaコマンド実行時に -daオプションまたは -disableassertionsオプションを付けます。
アサーション実行時のパフォーマンス
アサーションを有効にして実行すると、プログラムの中のassert文に出会うたびにassert文の条件式が評価されて しまいます。
たとえAsssertionErrorが発生しなくても、条件式の評価の為に時間がかかってしまいます。
アサーション利用
アサーションの不適切な利用
- publicなメソッドの引数の値をチェックする
- 変数や配列などの値を変更する
- 入力チェック
アサーションの適切な利用
- privateメソッドの事前条件のチェック
- privateメソッドの終了条件のチェック
- メソッド内で常に成立すべき条件のチェック