Em um debate sobre variáveis de retorno, alguns membros da equipe preferem um método para retornar o resultado diretamente ao chamador, enquanto outros preferem declarar uma variável de retorno que é retornada ao chamador (veja exemplos de código abaixo)
O argumento para o último é que ele permite que um desenvolvedor que esteja depurando o código encontre o valor de retorno do método antes de retornar ao chamador, facilitando assim a compreensão do código: Isso é especialmente verdade quando as chamadas de método são encadeadas.
Existem diretrizes sobre qual é a mais eficiente e / ou existem outras razões pelas quais devemos adotar um estilo em detrimento de outro?
obrigado
private bool Is2(int a)
{
return a == 2;
}
private bool Is3(int a)
{
var result = a == 3;
return result;
}
c#
coding-style
return-type
pb01
fonte
fonte
result
lo antes de devolvê-lo.stloc.0
eldloc.0
na segunda versão). Mas acho que isso acontece apenas no modo de depuração. E não é realmente importante aqui de qualquer maneira.a = b = c;
ea == b == c
, eu evitaria escrever algo que se parecessea = b == c
se você puder. Quando vi pela primeira vez uma linha de código assim, levei alguns segundos para descobrir o que estava acontecendo. Esse código se destacou. Gostaria de dar um tapa entre parêntesesa == 3
, mas o StyleCop não gosta - um bom motivo para usar a versão número um. Outra coisa: isso é essencialmente um lambda, comoa => (a == 3)
. Por que adicionar uma linha de código a uma função trivial já inchada?Respostas:
Como eu uso o Resharper com o Visual Studio, Ctrl-RV (ou Ctrl-Alt-V, se você usar as associações de teclas Resharper / IntelliJ) transforma seu primeiro exemplo em seu segundo exemplo. Então, quando eu quero depurar, posso fazer isso com bastante facilidade. E se eu esquecer de colocá-lo de volta, não me sentirei mal porque o Ctrl-RI o colocará de volta novamente para facilitar a leitura.
Sério, desperdice seu tempo discutindo sobre coisas mais importantes. Como onde colocar seus chaves ou espaços principais versus abas.
fonte
Pessoalmente, acho o primeiro exemplo mais fácil de ler. Você ainda pode depurá-lo, definindo um ponto de interrupção na declaração de retorno e adicionando
a == 2
à janela de inspeção ou usando a verificação rápida.Mas isso é realmente uma questão de preferência pessoal. Ambas as versões estão OK.
fonte
Quando o código é tão facilmente legível como o seu exemplo, não há nada errado em retornar o resultado de uma operação lógica como
return a == 2
. No entanto, se o valor de retorno for uma declaração mais complexa ou se parecer com algo comoconvém usar variáveis para armazenar partes disso primeiro e simplificar a declaração de retorno, para facilitar a leitura.
fonte
Em um exemplo simples como esse, qualquer um deles está OK.
Para exemplos mais complicados, prefiro a segunda maneira. Isso é apenas porque é mais legível e outros provavelmente terão que manter o código.
fonte
result
, que por si só é um identificador completamente não descritivo e inútil.