Code Review em JavaScript: o que verificar e como dar feedback na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que code review não é sobre "encontrar bugs"

\n

Code review (revisão de código) não é apenas uma formalidade ou uma forma de encontrar erros de digitação. No desenvolvimento moderno com JavaScript e Node.js, é a principal ferramenta para manter a qualidade do código, compartilhar conhecimento na equipe e prevenir dívida técnica. No entanto, muitos desenvolvedores reduzem a revisão à verificação de sintaxe, perdendo de vista problemas arquitetônicos, desempenho e legibilidade.

\n

Neste artigo, vamos abordar o que exatamente verificar no código JavaScript (usando Node.js como exemplo) e como dar feedback de forma a não ofender um colega, mas sim ajudá-lo a crescer. Exemplos práticos de código ajudarão a fixar o conteúdo.

\n\n

1. O que verificar no código JavaScript: checklist prático

\n

Vamos começar com pontos específicos de verificação. Vamos dividi-los em três níveis: sintaxe/estilo, lógica/segurança e arquitetura.

\n\n

1.1. Estilo de código e formatação

\n

Aqui é simples: use um linter (ESLint) e um formatador (Prettier). Na revisão, não deve haver discussões sobre espaços. Configure os arquivos de configuração no projeto uma vez. Verifique se:

\n
    \n
  • O código segue as regras do eslint-config-airbnb ou suas configurações personalizadas.
  • \n
  • Não há console.log desnecessários (a menos que seja modo de desenvolvimento).
  • \n
  • Os nomes das variáveis são significativos: const userData, não const x.
  • \n
\n\n

1.2. Lógica de trabalho com assincronia (Promise, async/await)

\n

Esta é uma área frequente de erros em Node.js. Verifique:

\n
    \n
  • Tratamento de erros em funções assíncronas. A ausência de try/catch pode causar a queda do processo.
  • \n
  • Uso correto de await dentro de loops. Se as tarefas não dependem umas das outras, use Promise.all.
  • \n
\n

Ruim:

\n
// Execução sequencial, embora pudesse ser paralela\nconst results = [];\nfor (const id of ids) {\n  const data = await fetchData(id); // Aguarda cada requisição\n  results.push(data);\n}\n
\n

Bom:

\n
// Execução paralela\nconst promises = ids.map(id => fetchData(id));\nconst results = await Promise.all(promises);\n
\n\n

1.3. Segurança e vazamentos de memória

\n

Para Node.js é crítico:

\n
    \n
  • Ausência de injeções: não use eval ou new Function sem necessidade urgente.
  • \n
  • Fechamento de streams, conexões com banco de dados e descritores de arquivo.
  • \n
  • Validação de dados de entrada. Nunca confie no corpo da requisição (req.body).
  • \n
\n\n

2. Como dar feedback: psicologia e tática

\n

Mesmo uma lista de verificação perfeita não funcionará se o feedback fizer o autor do código querer fechar o PR e pedir demissão. Aqui estão algumas regras.

\n\n

2.1. Regra do "sanduíche" (opcional, mas funciona)

\n

Comece com um comentário positivo, depois aponte o problema e termine com apoio. Por exemplo:

\n
    \n
  • "Ótima solução usando Map para cache!"
  • \n
  • "No entanto, aqui há um problema potencial com a mutação do array original. Vamos usar .map() em vez de .forEach() com push."
  • \n
  • "No restante, o código está limpo, obrigado pela correção rápida!"
  • \n
\n\n

2.2. Comente o código, não a pessoa

\n

Em vez de "Você escreveu um loop horrível", diga "Este loop pode ser substituído por Array.reduce para melhorar a legibilidade". Evite o pronome "você" em contextos negativos.

\n\n

2.3. Dê contexto e alternativas

\n

Apenas escrever "Isso está errado" é ruim. Explique por que e sugira uma alternativa. Exemplo de comentário ruim:

\n
"Não use var."
\n

Bom comentário:

\n
"Aqui, var cria uma variável no escopo global, o que pode causar bugs. Vamos substituir por const, já que o valor não é reatribuído."

Blogs

Book Recommendations