Code review em C#: o que verificar e como dar feedback para iniciantes

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

Code review em C#: o que verificar e como dar feedback

\n

Code review é uma das ferramentas mais poderosas para melhorar a qualidade do código. Para desenvolvedores C# iniciantes, isso muitas vezes parece estressante: dá medo que seu código seja criticado, ou não fica claro o que exatamente procurar no código alheio. Na verdade, um bom code review é um diálogo, não um exame. Neste artigo, vamos analisar o que observar ao revisar código C# (especialmente no ecossistema .NET) e como formular observações para que ajudem, e não ofendam.

\n\n

1. O que verificar no código C#: checklist para o revisor

\n

Quando você abre um pull request (PR) de um colega, os olhos se perdem. Para não se afogar em detalhes, use uma abordagem sistemática. Aqui estão as áreas-chave que você precisa verificar em qualquer projeto C#.

\n\n

1.1. Arquitetura e legibilidade

\n

Primeiro, avalie o panorama geral. Responda às perguntas:

\n
    \n
  • Este código resolve o problema proposto?
  • \n
  • Ele duplica a lógica existente (princípio DRY)?
  • \n
  • Os nomes das classes, métodos e variáveis são claros?
  • \n
\n

Ruim:

\n
public void DoStuff(int a, int b)\n{\n    var x = a + b;\n    // ... mais 50 linhas\n}
\n

Bom:

\n
public int CalculateTotalPrice(int basePrice, int taxAmount)\n{\n    return basePrice + taxAmount;\n}
\n

O nome do método e dos parâmetros já indicam a finalidade. Isso reduz a carga cognitiva do leitor.

\n\n

1.2. Tratamento de erros e segurança contra null

\n

C# é uma linguagem com um sistema de tipos avançado, mas NullReferenceException é um problema comum. Verifique:

\n
    \n
  • As verificações de null estão sendo usadas (?. , ??, ??=)?
  • \n
  • Há tratamento de exceções (try-catch) onde necessário?
  • \n
  • As exceções não estão sendo engolidas em um catch vazio?
  • \n
\n

Exemplo de código perigoso:

\n
var user = GetUserById(id);\nConsole.WriteLine(user.Name); // Erro se user == null
\n

Versão segura:

\n
var user = GetUserById(id);\nConsole.WriteLine(user?.Name ?? "Convidado");
\n\n

1.3. Performance e LINQ

\n

LINQ é conveniente, mas pode ser ineficiente. Verifique:

\n
    \n
  • Não está sendo feita uma passagem múltipla pela coleção (por exemplo, .Where().Select().ToList() em IQueryable)?
  • \n
  • Any() está sendo usado em vez de Count() > 0 para verificar a existência de elementos?
  • \n
  • Não há materializações desnecessárias (.ToList(), .ToArray()) no meio da cadeia?
  • \n
\n

Ruim:

\n
var list = items.Where(x => x.IsActive).ToList();\nvar first = list.FirstOrDefault();
\n

Melhor:

\n
var first = items.FirstOrDefault(x => x.IsActive);
\n\n

1.4. Assincronicidade e Task

\n

No .NET, a assincronicidade é padrão. Observe:

\n
    \n
  • O await foi esquecido antes de uma chamada assíncrona?
  • \n
  • Há chamadas bloqueantes (.Result, .Wait()) em um contexto síncrono?
  • \n
  • A convenção é seguida: métodos assíncronos terminam com Async?
  • \n
\n

Antipadrão:

\n
var data = GetDataAsync().Result; // Pode causar deadlock
\n

Correto:

\n
var data = await GetDataAsync();
\n\n

2. Como dar feedback: de forma suave, mas construtiva

\n

Mesmo um checklist perfeito é inútil se seus comentários soarem como crítica. Aqui estão algumas regras que ajudarão a tornar o code review útil para todos.

\n\n

2.1. Use "mensagens-eu" e perguntas

\n

Em vez de "Você escreveu um código ruim", diga "Acho que este método pode ser simplificado. O que você acha?".

\n

Exemplos de formulações:

\n
    \n
  • "Não tenho certe

Blogs

Book Recommendations