계: 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