1
resposta

Criando uma função para não repetir código

Olá meus caros amigos, estou com um pequeno problema, aquele bendito código repetido que deve ser transformado numa função, porém eu estou com uma duvida de como transforma-lo em função eis o exemplo abaixo, O principal do que está ai seria a validação no IF, para trocar o valor fisiologico pelos valores que listarei abaixo do exemplo, sem ter que repetir codigo

 const piramideNecessidade = await mongodb(piramideNecessidade).find().toArray()

  const pontosConsolidados = await mongodb(pontosConsolidados).find().toArray()
  var paraOProximoNivel = 0
  var meusPontosParaProximoNivel = 0
  var meuNivel = 0

  for (const novaPiramideNecessidade of piramideNecessidade) {
    if (novaPiramideNecessidade.level === 'Fisiológico') {
      paraOProximoNivel += novaPiramideNecessidade.goal_level1
      const valueItem = pontosConsolidados.filter((values) => values.item === novaPiramideNecessidade.keycode)
      for (const valueItemNew of valueItem) {
        if (valueItemNew.value >= novaPiramideNecessidade.goal_level1) {
          meusPontosParaProximoNivel += novaPiramideNecessidade.goal_level1
        } else {
          meusPontosParaProximoNivel += valueItemNew.value
        }
      }
    }
  }

O meu problema é o seguinte, existe uma piramide de 5 niveis, onde eu devo ir calculando o seu nivel do 1 até o 5, cada um dos niveis tem um nome, que seria o novaPiramideNecessidade.level, no caso esse exemplo mostra o Fisiológico, existem os outros 4 niveis, que fiz um enum para o caso.

module.exports = {
  PHYSIOLOGICAL: 'Fisiológico',
  SECURITY: 'Security',
  SOCIAL: 'Social',
  REALIZATION: 'Realização'
}

Como eu passo por cada um desses niveis, fisiologico, segurança... sem ter que repetir o código?

1 resposta

Boa tarde Thiago, tudo certo?

Uma forma que você pode utilizar a construção de um enum é utilizar números ao invés de strings para iterar sobre os seus campos, então você poderia fazer o seguinte:

const Niveis = {
    PHYSIOLOGICAL: 1,
    SECURITY: 2,
    SOCIAL: 3,
    REALIZATION: 4    
}

module.exports = Niveis

Sendo assim, você vai poder criar uma validação do tipo:

 if (novaPiramideNecessidade.level === Niveis.PHYSIOLOGICAL)

Dessa forma, você pode iterar com:

novaPiramideNecessidade.level++

Mas claro, você também pode usar outras práticas de orientação à objetos e criar métodos específicos que cuidem dessas validações e iterações.

Espero ter ajudado e bons estudos!