Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Comparison with NaN
Abstract
Fazer uma comparação com
NaN
é sempre um erro.Explanation
Quando é feita uma comparação com
Exemplo 1: O exemplo a seguir tenta garantir que uma variável não é
Isso tenta verificar se
NaN
, ela é sempre avaliada como false
, exceto para o operador !=
, que sempre é avaliado como true
, já que NaN
não está ordenado.Exemplo 1: O exemplo a seguir tenta garantir que uma variável não é
NaN
.
...
if (result == Double.NaN){
//something went wrong
throw new RuntimeException("Something went wrong, NaN found");
}
...
Isso tenta verificar se
result
não é NaN
, mas o uso do operador ==
com NaN
sempre resulta em um valor de false
, e, portanto, essa verificação nunca lançará a exceção.References
desc.structural.java.code_correctness_comparison_with_nan