Às vezes me deparei com um código semelhante ao exemplo a seguir (o que essa função faz exatamente está fora do escopo desta pergunta):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Como você pode ver, if
, else if
e else
instruções são utilizados em conjunto com o return
comunicado. Isso parece bastante intuitivo para um observador casual, mas acho que seria mais elegante (da perspectiva de um desenvolvedor de software) descartar o else
-s e simplificar o código da seguinte forma:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Isso faz sentido, pois tudo o que segue uma return
instrução (no mesmo escopo) nunca será executado, tornando o código acima semanticamente igual ao primeiro exemplo.
Qual das opções acima se encaixa mais nas boas práticas de codificação? Existem desvantagens em qualquer método no que diz respeito à legibilidade do código?
Editar: Uma sugestão duplicada foi feita com esta pergunta fornecida como referência. Acredito que minha pergunta aborda um tópico diferente, pois não estou perguntando sobre evitar declarações duplicadas, como apresentado na outra pergunta. Ambas as questões buscam reduzir as repetições, embora de maneiras ligeiramente diferentes.
-1
é um número, false
é um booleano e value
não é especificado aqui, portanto, pode ser qualquer tipo de objeto.
value
verdade fosse um número inteiro. Se pode ser qualquer coisa, então é ainda pior.
else
é menor, o problema maior é que você obviamente está retornando dois tipos de dados de uma única função, o que torna a API da função imprevisível.