Home > Artigos > Código Javascript Limpo - 3 de 5

16-02-2023

Código Javascript Limpo - 3 de 5

Substituir, Condições, Encadeadas, Clausulas, Switch-Case, Objetos


3. SIMPLIFICAÇÕES DE CÓDIGO


É comum, ao longo do tempo, que o código cresça e se torne mais complexo, o que pode tornar mais difícil a sua manutenção. Nesse sentido, é importante que o programador tenha em mente algumas boas práticas para manter o código limpo e organizado.

Para além das que já referimos nos temas anteriores uma das formas de tornar o código mais limpo e organizado é ter estruturas simples, por exemplo, substituindo condições encadeadas por cláusulas bem como ‘switch/case’ por objetos, tornando o código mais simplificado, eficiente e legível.

 

SUBSTITUIR CONDIÇÕES ENCADEADAS POR CLAUSULAS

 

Esta substituição pode ser importante quando temos um monte de 'if-else' encadeados. Com as cláusulas, o código acaba por ficar mais curto, legível e objetivo, sem comprometer a sua eficiência.

 

Mau exemplo:

function processData(data) {
  let result;

  if (data.type === "A") {
    if (data.value >= 0 && data.value <= 10)
      result = data.value * 10;
    else
      result = data.value * 5;
  } 
  else if (data.type === "B") {
    if (data.value >= 5 && data.value <= 15)
      result = data.value * 15;
    else
      result = data.value * 10;
  } 
  else
    result = data.value * 5;

  return result;
}

 

Bom exemplo:

function processData(data) {
  switch (data.type) {
    case "A":
      return data.value >= 0 && data.value <= 10 ? data.value * 10 : data.value * 5;
    case "B":
      return data.value >= 5 && data.value <= 15 ? data.value * 15 : data.value * 10;
    default:
      return data.value * 5;
  }
}

 

No "mau exemplo" são usadas várias condições encadeadas, isto é, é necessário percorrer vários níveis de ‘if-else’ para se chegar a uma resposta final, o que torna o código muito longo e pouco eficiente, para além de ser mais difícil de ler e compreender. A sua substituição por ‘switch/case’ com uma pequena ajuda de operações ternárias permitiu encurtar o código e torná-lo mais claro e organizado sem comprometer o resultado final.

 

Esta substituição por ‘switch/case’, em determinados casos, poderão ainda ser otimizados como veremos de seguida.

 

SUBSTITUIÇÃO DE ‘SWITCH/CASE’ POR OBJECTOS

 

Mau exemplo:

const getUserName = (id) => {
 switch (id) {
  case "abc-111-zzz":
   return "Marcus74";
  case "abc-222-zzz":
   return "Maria63";
  case "abc-333-zzz":
   return "Angelmaria54";
  default:
   return "Admin123";
 }
};

 

Bom exemplo:

const userNames = {
 "abc-111-zzz": "Marcus74",
 "abc-222-zzz": "Maria63",
 "abc-333-zzz": "Angelmaria54",
};

const geUserName = (id) => userNames[id] || "Admin123";

 

O código em "bons exemplos" é o mais indicado porque usa uma estrutura de dados mais apropriada, objeto 'userNames'. Desta maneira, o código fica ainda mais simples e fácil de se compreender, sem alterar o resultado. Além disso, o uso de um objeto faz com que o código fique mais eficiente, uma vez que as operações de acesso aos dados são mais rápidas do que as operações dentro de um ‘switch’.

Por fim, e com o uso do operador condicional (||) é possível ainda fazer uma verificação de existência de uma chave no objeto, retornando um valor padrão caso não encontre correspondências válidas.

 

Todos estes casos depende sempre do contexto. Se forem pequenos pedaços de código o "mau exemplo" funcionaria perfeitamente ou por outras palavras não se ganharia muito em altera-lo, mas se esse código tiver tendência a crescer (algo que é sempre possível e muitas vezes é difícil de saber à priori) é melhor usar as alternativas demonstradas.

 

Artigos Relacionados:

 

  

👉 Follow @niuGIS

RELACIONADAS


05-05-2023
ECMAScript

Contacte-nos 214 213 262

Informações