Vi em vários tópicos que algumas pessoas utilizam a função else if de duas maneiras:
if(){
} else if(){
}
e
if(){
}else{
if(){
}
}
Qual o correto?
Vi em vários tópicos que algumas pessoas utilizam a função else if de duas maneiras:
if(){
} else if(){
}
e
if(){
}else{
if(){
}
}
Qual o correto?
As duas maneiras resultam em um fluxo de execução diferente. Depende do seu contexto para aplicar uma ou outra.
No primeiro caso, o else if será testado logo após o primeiro if, caso o primeiro if falhe. Outro detalhe e que exitem dois blocos de código distintos, o do if e o do else if. Se sua condição não for atendida no else if, seu código continuara a executar sem entrar em nenhum dos blocos.
Já no segundo caso, existem três blocos de código, pois você também poderia usar comandos dentro do else independentemente do seu fluxo de execução entrar no segundo if. Outro detalhe e que o else sem uma condição fará seu fluxo de execução passar pelo bloco de código do else.
Apesar de você conseguir obter os mesmos resultados usando ambos os comandos, a sintaxe do primeiro possui mais legibilidade, por ser menos aninhada, além de ser mais fácil de evitar erros de lógica.
No geral a segunda maneira seria utiliza quando os testes realizados nos if forem independentes ou caso precise usar mais comandos fora do bloco do segundo if.
Obrigado adalbertov. Eu havia testado os dois e sabia que funcionavam, mas tinha dúvida de qual seria a forma correta. Sua explicação faz todo o sentido: vai depender do uso.