Oi, Jean! Que ótima pergunta.
Ambas as formas funcionam, mas existe uma técnica muito utilizada no dia a dia da programação chamada Early Return (Retorno Antecipado).
Vou te explicar por que a primeira forma, sem o else, costuma ser considerada uma prática mais interessante em muitos cenários.
O conceito de Early Return
Quando usamos o if para verificar um erro e já colocamos o return logo em seguida, estamos dizendo ao programa: "Se algo estiver errado, pare tudo aqui e não continue".
Isso traz algumas vantagens:
- Menos aninhamento: Ao evitar o
else, seu código fica mais "linear". Você não precisa abrir tantas chaves { }, o que facilita a leitura rápida. - Foco no "Caminho Feliz": O "caminho feliz" é o fluxo principal onde tudo dá certo. Quando limpamos as validações no início da função, o restante do código que realmente executa a lógica principal fica livre de distrações.
- Clareza: Fica muito evidente quais são as condições que impedem o código de prosseguir.
Comparando as duas abordagens
Vamos olhar para a estrutura do seu código de uma forma simplificada:
Com o else (Sua sugestão):
Nesta abordagem, a lógica principal do seu programa fica "presa" dentro de um bloco else. Se você tivesse 5 validações diferentes, o código principal estaria muito deslocado para a direita por causa dos vários níveis de indentação.
Com o Early Return (Forma da aula):
O código flui de cima para baixo. Primeiro tratamos as exceções (campos vazios, nomes duplicados) e, se o programa passar por esses "filtros", ele chega naturalmente na parte de adicionar o amigo.
Qual é a melhor prática?
Na maioria das equipes de desenvolvimento, prefere-se evitar o uso excessivo de else quando um if com return resolve o problema. Isso deixa o código mais limpo e fácil de manter.
Imagine que, no futuro, você queira adicionar mais 10 validações. Se usar else em todas, terá uma "escada" de código. Com o padrão que a Jacqueline e o Rodrigo mostraram, você apenas adiciona novos blocos de if no topo da função.
O seu código com else está correto e funciona perfeitamente! Não há erro lógico nele. Porém, se você quiser escrever um código que outros programadores achem mais fácil de ler e dar manutenção, a estratégia de validar e retornar cedo é uma excelente escolha para o seu repertório.
Continue praticando e testando essas diferentes formas de escrever a mesma lógica, isso ajuda muito a desenvolver o raciocínio.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!