Early Returns/Exits - Padrões de código em JavaScript

Padrões de código em JavaScript

Suponha que você tenha uma função que só deve rodar se uma determinada condição for verdadeira.

Você poderia envolver a sua implementação dentro de uma declaração if.

TypeScript
const onSubmit = (form) => {
  if (form.valid) {
    // Do something here
  }
};

Mas uma abordagem mais clara seria usar um "early return" (retorno antecipado) se a condição for falsa.

TypeScript
const onSubmit = (form) => {
  if (form.valid === false) {
    return;
  }

  // Do something here
};

Veja, em vez de executar se a condição for verdadeira, podemos inverter a lógica e recusar a execução se a condição for falsa.

Essas declarações if são chamadas guardas, porque eles impedem o seu código de ser executado. Você pode ter quantos guardas você quiser.

TypeScript
const onSubmit = (form) => {
  if (form.valid === false) {
    return;
  }

  const userData = form.value;
  if (isValidUser(userData) === false) {
    return;
  }

  if (emailIsTaken(userData.email)) {
    return;
  }

  // Do something here
};

LinkEarly Exits

Este padrão é chamado de "early returns" (retornos antecipados), mas eu não gosto desse nome porque parece só se aplicar para declarações de return e não é disso que se trata.

Um nome melhor é "early exits" (saídas antecipadas), afinal, você pode sair do seu código de outras maneiras.

Por exemplo, se você não está realmente esperando que essas condições sejam falsas, você pode usar throw em vez de "return".

TypeScript
const onSubmit = (form) => {
  if (form.valid === false) {
    throw Error('Form is invalid');
  }

  const userData = form.value;
  if (isValidUser(userData) === false) {
    throw Error('Invalid user data');
  }

  if (emailIsTaken(userData.email)) {
    throw Error('Email is already taken');
  }

  // Do something here
};

LinkConclusão

As referências estão abaixo.

Se você gostou do conteúdo, você sabe o que fazer. Temos muitos outros vídeos curtos e informativos no nosso canal. Se inscreva caso você tenha interesse nisso.

Tenha um ótimo dia e nos vemos em breve.

LinkReferências

  1. Substituir Condicionais Enclausuladas com Guard Clauses por Martin Fowler
  2. Refatorando - Melhorar o design de um código que já existe por Martin Fowler, com Kent Beck

Assine a nossa Newsletter e seja avisado quando eu lançar um curso, postar um vídeo ou escrever um artigo.

Campo obrigatório
Campo obrigatório