Pode soar um pouco estranho você ouvir alguém dizer que você deve evitar condicionais ifs/elses em seu código, mas isso é uma realidade.
Isso porque muitos ifs/elses vão deixar o seu código mais difícil de ler e dar manutenção. Além disso, muitas condicionais vão aumentar muito a sobrecarga (overhead) do seu sistema em tempo de execução.
Exemplificando
Neste exemplo, vamos criar uma função que vai simular a venda de carros de acordo com sua marca.
Vamos colocar algumas condicionais para te dar um breve introdução do problema, e em seguida, apresentar algumas possíveis soluções.
O código acima funciona perfeitamente, mas existem problemas ai. Além da difícil leitura, quando esse código for executado, a CPU vai disparar uma branch prediction para tentar “adivinhar” qual é a condicional verdadeira.
Se a branch prediction acertar qual condição é a verdadeira, o seu código não vai sofrer tanto. Porém, se a condição não for a verdadeira, a CPU terá que seguir analisando as condicionais até encontrar a verdadeira.
E qual o problema disso? Essa situação vai te custar um atraso (delay) na execução do seu código, podendo ser muito prejudicial em um projeto maior, por exemplo.
Então, como evitar as condicionais em excesso?
Uma técnica que eu sempre uso é substituir as condicionais por um objeto literal. Dessa forma, ao invés de verificarmos a marca, simplesmente a acessamos no objeto:
Percebe que agora não há nenhum tipo de verificação? Isso é ótimo para o desempenho da sua aplicação.
Agora você pode estar se perguntando, “e se eu não tiver uma determinada marca disponível?”. Bom, ai entrará em ação o operador de coalescência nula, ou simplesmente às duas interrogações (??
) que estão logo após o retorno da marca.
Conclusão
Então agora me conte: você já conhecia essa técnica? Se não conhecia, vai começar a usar ou você acredita que alguns milissegundos não irão fazer diferença?
Espero ter contribuído com o seu aprendizado. Um abraço e até a próxima!
Saiba mais
Entenda o operador de coalescência nula (??) – JavaScript
Gerenciando variáveis de ambiente no Node.JS