Fiz uma implementação recentemente no trabalho e o desenvolvedor que fez code review no meu código, sugeriu que eu removesse do meu método o “return duplo” que havia… era algo do tipo (favor abstraiam apenas a ideia):
public boolean metodo(int a){
if (a < 10) return true;
return false;
}
então mudei para algo do tipo:
public boolean metodo(int a){
boolean result = false;
if (a < 10) {result = true;}
return result;
}
Minha dúvida é: Porque o “return duplo” é considerado má prática, onde posso ler sobre isso?
Eu acho que você poderia aproveitar essa oportunidade para perguntar a este desenvolvedor exatamente isso: porque é considerado má prática e onde você pod ler mais sobre isso.
Acho revisao de código muito bom para o time mas é preciso ter cuidado para nao misturar preferências pessoais com o que é certo ou errado.
Para evitar esse tipo de discussao as vezes é legal ter um guia de estilo de código (ou algum publicado na internet).
Minha opiniao é que nao é uma má prática. Dependendo da situaçao pode nao ser o melhor estilo, mas eu prefiro usar múltiplos return ao invés de longos blocos de if/else ou criar essas variáveis só pra retornar o resultado no fim do método.
Eu prefiro múltiplos return principalmente como guard clauses
Se o seu método era realmente como postou aqui o que acharia mais estranho é você ter esse if ao invés de fazer diretamente:
Na verdade, na hora não me ocorreu de perguntar, simplesmente acatei e fui refatorar, mas ficou a dúvida e como ele não está aqui agora, então comecei a procurar na internet mas nao conseguia achar nada…
Quanto ao método real, na verdade, era mais complexo acabei resolvendo com Optional (ainda tenho dúvidas se está bom) este que coloquei no post foi só pra exemplificar…
Seria interessante saber por que ele acha disso. Mesmo que você não o convença de que está certo (ou ele te convença que o jeito dele é o melhor), ainda assim seria interessante saber se essa regra deve ser seguida sempre, para evitar que você tenha problemas no seu review por causa disso (independente se essa regra é certa ou não). É bom saber também o que os demais membros da equipe acham. Creio que seria produtivo para todos ter uma um padrão a respeito.
Particularmente, não vejo problemas com múltiplos return, ainda mais como guard clauses, como citado pelo AbelBueno. Acredito que deixa o código bem mais legível na maioria dos casos, e o trabalho para implementá-los é pequeno.
Interessante notar (como citado aqui) que a presença de Exceptions em linguagens OO modernas (dentre outras coisas), torna essa regra um pouco mais difícil de seguir, já que um exception é (também) um ponto de saída de um método.