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

Esse código que eu fiz é diferente do exemplo. É um bom código ? Pois eu gostaria de sugestões pra melhorar...

<meta charset="UTF-8">
<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var cont = 1;

    while(cont <= 3)   {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");


        if (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada) {

            alert("Bem-vindo ao sistema " + loginInformado);
            cont = cont + 3        
        }
            else    {    

                alert("Login inválido. Tente novamente");
                cont = cont + 1;
            }
    }

    if (cont == 4 && loginCadastrado != loginInformado || senhaCadastrada != senhaInformada)  {
        alert("Quantidade de tentativas foi ultrapassada!"); 
    }
</script>
1 resposta
solução!

Opa Matheus!

Seu código funciona e tem uma boa lógica. Acho legal da sua parte querer e dar abertura para receber feedback.

Algo que você poderia ter em mente para o futuro é tentar não repetir código, especialmente um grande como é a verificação de login/senha. Sua negação lógica ficou perfeita, mas traz complexidade ao código. Pense que "menos é mais" em programação, ou seja, tente manter simples (em inglês há o acrônimo KISS - keep it simple stupid).

Então você poderia declarar essa parte do login/senha em uma variável booleana e no final só negá-la. Assim:

        var valido = (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada);

        if (valido) {

...

    if (cont == 4 && !valido)  {

Outra coisa que você deve tentar manter em mente é a experiência do usuário. Quando o usuário erra pela terceira vez ainda recebe a mensagem para tentar novamente e na sequência a mensagem de que as tentativas foram esgotadas.

Fiz algumas observações e alterações no código do Adriano, neste post (sobre o mesmo exercício):

https://cursos.alura.com.br/forum/topico-fiz-o-codigo-porem-queria-melhora-lo-123296

Por fim, evite testes de condição sem separação:

(cont == 4 && loginCadastrado != loginInformado || senhaCadastrada != senhaInformada)

É melhor separar as condições da forma que você pensou para evitar surpresas:

(cont == 4 && (loginCadastrado != loginInformado || senhaCadastrada != senhaInformada))

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software