Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Incluir execução do código em else

Olá, tenho uma pequena dúvida. Durante as aulas, para validação, utilizamos uma condicional if para verificar os valores e alertar antes de continuar a execução do código. Por exemplo:

    let lista = document.getElementById('lista-amigos');
    if(amigos.includes(amigo.value)){
        alert('Nome já incluso na lista.')
        return;

Gostaria de saber, no entanto, se é melhor ou de boa prática incluir a execução do código na condicional else. Exemplo:

    let lista = document.getElementById('lista-amigos');
    if(amigos.includes(amigo.value)){
        alert('Nome já incluso na lista.')
        return;
    }else{
        amigos.push(amigo.value);

        if (lista.textContent == '') {
        lista.textContent = amigo.value;
        } else {
            lista.textContent = lista.textContent + ', ' + amigo.value;
        }
        amigo.value = '';
    } 

Desde já, agradeço o esclarecimento!

1 resposta
solução!

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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!