Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Organização do código / reduzir ele

Olá. Estou no capítulo 5 e estou com dúvidas quanto a este. Nesta parte o instrutor passou sobre como deixar o código mais semântico, sobre criar funções para poder diminuir de 15 linhas de código para apenas 5. Enfim, o que eu não entendo é como posso fazer isso em outras situações. Fazendo junto com o instrutor explicando, está dando certo, consigo entender. Mas em algumas outras situações, já não...

Por exemplo o exercício da atividade 8, tinhamos este código:

<button class="botao">Calcula</button>
<input class="numero">
<input class="tabuada">
<span class="resultado"></span>

var botao = document.querySelector('.botao');
    var numero = document.querySelector('.numero');
    var tabuada = document.querySelector('.tabuada');
    var resultado = document.querySelector('.resultado');

    botao.addEventListener('click', function() {

        resultado.textContent = numero.value * tabuada.value;

    });

Eu sei que tenho um botão que deve calcular o número * a tabuada e dar o resultado. E no javascript, ele está pegando a informação de cada campo e jogando nas suas variáveis, e após isto, ele adiciona um evento ao botão, que a partir do click, ele traz o resultado. Até aí, ok!

Porém, deveriamos de organizar ele. E conforme a opinião do instrutor, o resultado esperado seria este:

<button class="botao">Calcula</button><input class="numero"><input class="tabuada"><span class="resultado"></span>
<script>

    function buscaElemento(seletor) {
        return document.querySelector(seletor);
    }

    function aplicaTabuada(numero, tabuada) {

        return numero * tabuada;
    }

    var botao = buscaElemento('.botao');
    var numero = buscaElemento('.numero');
    var tabuada = buscaElemento('.tabuada');
    var resultado = buscaElemento('.resultado');

    botao.addEventListener('click', function() {

        resultado.textContent = aplicaTabuada(numero.value, tabuada.value);

    });


</script>

Aí que complicou, não estou entendendo o porque e o que ele esta fazendo. E como chegou neste ponto.

3 respostas
solução!

Olá Graziela!

Os comandos que seriam repetidos foram empacotados em funções. Todas as vezes que você tem repetição de código, você pode pegar essa parte repetitiva e coloca dentro de uma função. É esse o motivo do uso da função pulaLinha() em boa parte do curso.

Indo para este caso que você colocou, ele transformou a chamada document.querySelector('<classe>') em algo mais explícito e fácil de entender usando o nome buscaElemento().

Quando precisar trabalhar com outros programadores ou quando precisar dar manutenção no código de alguém, o nome de uma função auto explicativa será mais legível e fácil de entender, e evitará muita repetição de código desnecessário. Outro argumento importante em montar funções para ações repetitivas é que caso algo necessite de mudança no seu código, você altera o código de como funciona sua função e as mudanças serão aplicadas em todas as chamadas da mesma.

Em muitos casos é mais importante saber o que a função faz, do que saber como faz, quando se trabalha em equipe.

Quanto a função aplicaTabuada() segue o mesmo princípio. Você tem uma função que multiplica os dois elementos que são recebidos na função. Caso necessite fazer esse cálculo em outro trecho do seu código, você precisa apenas chamar essa função.

Espero ter ajudado mais que atrapalhado!

Ola Graziela,

organizar nem sempre significa reduzir o código, neste caso ele criou funções que só de ler você já vai saber o que ela faz, facilitando assim o entendimento do código.

Obrigada gente, já deram uma luz pra mim com as respostas de vocês.