Reino: Code Quality
Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.
Code Correctness: Comparison with NaN
Abstract
Comparar con
NaN
siempre es un error.Explanation
Cuando se hace una comparación con
Ejemplo 1: el siguiente ejemplo intenta asegurarse de que una variable no es
Así se intenta comprobar que
NaN
, siempre se evalúa como false
, excepto en el caso del operador !=
, que siempre se evalúa como true
, puesto que NaN
no está ordenado.Ejemplo 1: el siguiente ejemplo intenta asegurarse de que una variable no es
NaN
.
...
if (result == Double.NaN){
//something went wrong
throw new RuntimeException("Something went wrong, NaN found");
}
...
Así se intenta comprobar que
result
no es NaN
. Sin embargo, si se utiliza el operador ==
con NaN
siempre da como resultado un valor de false
, así que esta comprobación nunca produce la excepción.References
desc.structural.java.code_correctness_comparison_with_nan