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.

Função de venda de carros.
Função de venda de carros

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:

Refatoração.
Refatoração

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.

Mensagem padrão.
Mensagem padrão

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

Quais projetos colocar no meu portfólio?

MDN – Coalecência nula