DEV Community

Altencir Junior
Altencir Junior

Posted on

Otimizando seu código:Como reduzir a quantidade de IFs

Um dos desafios enfrentados por programadores e desenvolvedores é escrever códigos menores e mesmo assim funcionais. Muitas vezes,abusamos do uso de if, o que deixa nosso código confuso. Vejamos algumas soluções para essa questão.

  • Utilize expressões ternárias: Expressões ternárias são uma maneira concisa de escrever condições simples em uma única linha. Em vez de escrever um if/else, você pode usar a sintaxe condição ? valor1 : valor2.

  • Refatore o código:Refatore o código em funções separadas para torná-lo mais claro e organizado. Isso também torna mais fácil reutilizar o código e evita a duplicação de código.

  • Utilize arrays e objetos:Se você tiver muitos if's comparando valores, considere armazená-los em um array ou objeto. Em seguida, você pode usar a função Array.includes() ou objeto[propriedade] para verificar se o valor está presente.

  • Use operadores de comparação: Em vez de escrever vários if's para verificar se um valor está dentro de uma faixa específica, use operadores de comparação, como && (E) e || (OU), para combinar várias condições em uma única linha.

  • Utilize switch statement: Se você tiver muitos if's com múltiplos casos, considere usar um switch statement em vez de if/else. Isso pode tornar o código mais claro e mais fácil de ler.

*O uso de Strategy: *

Uma outra opção além das citadas acima, é o Strategy. O padrão Strategy reorganiza ordenadamente algoritmos alternativos (ou estratégias) para uma tarefa específica. Por meio dele podemos resolver códigos sem utilizar a estrutura condicional de uma maneira confusa.

Veja por exemplo o caso dessa calculadora que soma, multiplica e faz outras ações:

function calculate (number, operation){
  if(operation == 'multiply for two'){
    console.log(`result: ${number * 2}`)
  }else if(operation == 'divide by two'){
    console.log(`result: ${number / 2}`)
  }else if(operation == 'add two'){
    console.log(`result: ${number + 2}`)
  }else if(operation == 'subtract two'){
    console.log(`result: ${number - 2}`)
  }
}

calculate(5, 'multiply for two')
//Resultado:
//result: 10
Enter fullscreen mode Exit fullscreen mode

Percebe que embora correto e funcional, o código utiliza muito da estrutura condicional if? Será que isso pode ser resolvido? Observe:

const account = {
  'multiply for two': number => console.log(`result: ${number * 2}`),
  'divide by two': number => console.log(`result: ${number / 2}`),
  'add two': number => console.log(`result: ${number + 2}`),
  'subtract two': number => console.log(`result: ${number - 2}`)
}

function calculate(number, operation){
  return account[operation](number)
}

calculate(5, 'divide by two')
//Resultado:
//result: 2.5
Enter fullscreen mode Exit fullscreen mode

Qual a diferença? Foi se criado uma const que armazenava um parâmetro que iria executar quando chamado, um console.log com o parâmetro criado number, mais a ação da equação.

Feito isso, basta chamar a função calculate novamente com seus parâmetros: return account[operation](number) e finaliza chamando a função e escrevendo o desejado.

O código ficou muito menor e organizado de maneira fácil para entendimento.

Lembre-se de que a simplicidade e a clareza são as chaves para escrever códigos eficientes. E nesse artigo conseguimos ver, como você pode reduzir significativamente a quantidade de if's em seu código JavaScript e torná-lo mais fácil de manter e entender.

Top comments (0)