界: Code Quality
コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。
Code Correctness: Comparison with NaN
Abstract
NaN
との比較は常にエラーです。Explanation
NaN
と比較した場合、常に false
と評価されます。例外は !=
演算子で、NaN
は非順序型であるため常に true
と評価されます。例 1: 次では、変数が
NaN
ではないことを確認しています。
...
if (result == Double.NaN){
//something went wrong
throw new RuntimeException("Something went wrong, NaN found");
}
...
ここでは、
result
が NaN
ではないことの検証を試みています。しかし、NaN
に演算子 ==
を使用すると、常に結果は false
の値になり、このチェックで例外がスローされることはありません。References
desc.structural.java.code_correctness_comparison_with_nan