O problema com o seu exemplo básico não é a verificação nula, é a falha silenciosa .
Erros de referência / ponteiro nulo, na maioria das vezes, são erros do programador. Frequentemente, os erros do programador são mais bem tratados ao falhar imediatamente e em voz alta. Você tem três maneiras gerais de lidar com o problema nessa situação:
- Não se preocupe em verificar e apenas deixe o tempo de execução lançar a exceção nullpointer.
- Verifique e lance uma exceção com uma mensagem melhor que a mensagem básica do NPE.
Uma terceira solução é mais trabalho, mas é muito mais robusta:
- Estruture sua classe de forma que seja praticamente impossível que
_someEntity
esteja em um estado inválido. Uma maneira de fazer isso é livrar-se deAssignEntity
e exigir isso como um parâmetro para instanciação. Outras técnicas de injeção de dependência também podem ser úteis.
Em algumas situações, faz sentido verificar todos os argumentos de função quanto à validade antes de qualquer trabalho que você esteja realizando e, em outros, faz sentido dizer ao chamador que eles são responsáveis por garantir que suas entradas sejam válidas e não verificadas. Qual extremidade do espectro em que você está dependerá do domínio do seu problema. A terceira opção tem um benefício significativo em que você pode, até certo ponto, ter o compilador impor que o chamador faz tudo corretamente.
Se a terceira opção não é uma opção, então, na minha opinião, isso realmente não importa, desde que não falhe silenciosamente. Se a não verificação de null faz com que o programa exploda instantaneamente, tudo bem, mas se ele corromper os dados silenciosamente para causar problemas, é melhor verificar e lidar com isso imediatamente.