DEV Community

loading...
Cover image for The Guard Statement: Guard clause ou Early return.

The Guard Statement: Guard clause ou Early return.

Miguel
you’re the biggest tool.
・2 min read

Estruturas condicionais são sem duvida um dos assuntos mais importantes no âmbito computacional, indiferentemente do nível ou paradigma empregado. Apesar de possuir uma grande responsabilidade no desenvolvimento de aplicações, a utilização de profusas estruturas condicionais pode comprometer a legibilidade do código e aumentar a carga cognitiva do desenvolvedor responsável.


Alt Text

"Decisões são importantes."


O que é Guard Clause? 🤔

Guard clause ou Early return são termos utilizados ao arquitetarmos uma estrutura sequencial de código condicional, normalmente reconhecido como pré condição.

Comumente podemos construir Guard clauses respeitando 3 padrões:

  • Processa os parâmetros e retorna caso algum deles não respeite nossa regra de negócio;

  • Verifica o estado de um objeto e retorna um valor, sujeitado-se ao estado passado;

  • Elimina casos triviais.

Esses padrões são baseados na filosofia de "Handle errors in the same place where you detected them(Trate os erros no mesmo local onde os detectou)."


Como desenvolver um Guard Clause? 🧑🏻‍💻

Imagine um cenário em que estamos construindo uma batalha medieval e nosso guerreiro precisar lutar, porem para lutar nosso guerreiro precisa de determinados requisitos.

const getWarriorStatus = ({status}) => {
  let responseWarrior;
  if (status.stamina < 10){
    responseWarrior = isExhausted();
  }
  else {
    if (!status.equipped){
      responseWarrior = equip();
    }
    else {
      if (!status.blessed){
        responseWarrior = toBless();
      }
      else{
        responseWarrior = battle();
      }
    }
  }
  return responseWarrior;
}
Enter fullscreen mode Exit fullscreen mode

Olhando o código assim podemos concluir que o mesmo não se torna escalável caso o guerreiro comece a conquistar novo atributos.

const getWarriorStatus = ({status}) => {
  if (status.stamina < 10){
    return isExhausted();
  }
  if (!status.equipped){
    return equip();
  }
  if (!status.blessed){
    return toBless();
  }
  return battle();
}
Enter fullscreen mode Exit fullscreen mode

Aplicando os conceitos de Guard Clause conseguimos transformar o código outrora obsoleto em um produto agradável e escalável.

Obrigado por me deixar fazer parte do seu tempo! 🥰


Referências:


image

image

image

Discussion (0)