Otimizando seu código:Como reduzir a quantidade de IFs
Tags: javascript, beginners, programming
Published: 2023-01-31 18:41:43

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
```

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
```


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.