Ocasionalmente, encontro métodos onde um desenvolvedor optou por retornar algo que não é crítico para a função. Quero dizer, ao olhar para o código, aparentemente funciona tão bem quanto um void
e depois de um momento de reflexão, pergunto "Por quê?" Isso soa familiar?
Às vezes, eu concordo que na maioria das vezes é melhor retornar algo como a bool
ou int
, em vez disso, basta fazer a void
. Não tenho certeza, no geral, sobre os prós e contras.
Dependendo da situação, retornar um int
pode informar o chamador da quantidade de linhas ou objetos afetados pelo método (por exemplo, 5 registros salvos no MSSQL). Se um método como "InsertSomething" retornar um valor booleano, posso ter o método projetado para retornar true
se for bem-sucedido false
. O chamador pode optar por agir ou não nessas informações.
Por outro lado,
- Isso pode levar a um objetivo menos claro de uma chamada de método? A má codificação geralmente me obriga a verificar novamente o conteúdo do método. Se retornar algo, informará que o método é do tipo que você precisa fazer com o resultado retornado.
- Outra questão seria, se a implementação do método é desconhecida para você, o que o desenvolvedor decidiu retornar que não é essencial para a função? Claro que você pode comentar.
- O valor de retorno deve ser processado, quando o processamento puder ser finalizado no colchete de fechamento do método.
- O que acontece sob o capô? O método chamado foi causado
false
por um erro gerado? Ou retornou falso devido ao resultado avaliado?
Quais são suas experiências com isso? Como você agiria sobre isso?
void
pelo menos permite que o desenvolvedor saiba que o valor de retorno do método é inconseqüente; faz uma ação, em vez de calcular um valor.