Não evite negativos. Os humanos gostam de analisá-los mesmo quando a CPU os ama.
No entanto, respeite as expressões idiomáticas. Nós, humanos, somos criaturas de hábitos, então preferimos caminhos bem usados para direcionar caminhos cheios de ervas daninhas.
foo != null
, infelizmente, se tornou uma expressão idiomática. Eu mal noto mais as partes separadas. Eu olho para isso e apenas penso, "oh, é seguro pontuar de foo
agora".
Se você quiser derrubar isso (oh, algum dia, por favor), você precisa de um caso realmente strong. Você precisa de algo que permita que meus olhos deslizem sem esforço e entendam em um instante.
No entanto, o que você nos deu foi o seguinte:
foreach (someObject in someObjectList)
{
if(someObject == null) continue;
someOtherObject = someObject.SomeProperty;
}
O que não é nem mesmo estruturalmente o mesmo!
foreach (someObject in someObjectList)
{
if(someObject == null) continue;
someOtherObject = someObject.SomeProperty;
if(someGlobalObject == null) continue;
someSideEffectObject = someGlobalObject.SomeProperty;
}
Isso não está fazendo o que meu cérebro preguiçoso esperava. Eu pensei que poderia continuar adicionando código independente, mas não posso. Isso me faz pensar em coisas que não quero pensar agora. Você quebrou meu idioma, mas não me deu um melhor. Tudo porque você queria me proteger do único negativo que queimou seu egozinho desagradável em minha alma.
Desculpe, talvez o ReSharper esteja certo em sugerir isso 90% do tempo, mas em cheques com nulidade eu acho que você encontrou um caso no qual é melhor ignorá-lo. Ferramentas simplesmente não são boas em ensinar o que é código legível. Pergunte a um humano. Faça uma revisão por pares. Mas não siga cegamente a ferramenta.