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



Code review (revisão de código) é uma etapa obrigatória do desenvolvimento, especialmente em C++. Esta linguagem oferece enorme liberdade, mas junto com ela vem a responsabilidade. Para desenvolvedores iniciantes, o processo de revisão pode parecer assustador, mas na verdade é uma ferramenta poderosa de aprendizado. Neste artigo, vamos abordar o que observar ao verificar código C++ e como dar feedback para que seja útil, e não ofensivo.



1. Correção básica e segurança de memória



A primeira coisa a verificar em qualquer código C++ é a correção no gerenciamento de memória. C++ não possui coletor de lixo, portanto os erros aqui são críticos.



O que verificar:

  • Vazamentos de memória: Cada new deve ter um delete correspondente, cada new[] deve ter um delete[]. É melhor usar ponteiros inteligentes (std::unique_ptr, std::shared_ptr).
  • Acesso fora dos limites de arrays: Usar std::vector::at() em vez do operador [] para capturar erros.
  • Ponteiros pendentes: Ponteiros que referenciam memória já liberada.
  • Dupla liberação: delete repetido para o mesmo bloco de memória.


// Ruim: gerenciamento manual de memóriaint* arr = new int[100];// ... trabalho ...delete[] arr; // Fácil de esquecer

// Bom: usando RAIIstd::vector<int> arr(100);// A memória será liberada automaticamente


Dica para o revisor: Se vir ponteiros brutos (int* ptr) ou new/delete manuais — isso é um sinal de alerta. Sugira usar std::unique_ptr ou contêineres STL.



2. Uso da biblioteca padrão (STL)



C++20/23 fornece uma biblioteca padrão rica. Iniciantes frequentemente reinventam a roda onde poderiam usar soluções prontas.



Checklist:

  • Contêineres: Em vez de arrays brutos — std::vector, std::array, std::map.
  • Algoritmos: Em vez de loops manuais — std::find, std::sort, std::copy.
  • Strings: std::string em vez de char*.
  • Fluxos: std::ifstream/std::ofstream em vez de fopen do C.


// Ruim: busca manualbool found = false;for (int i = 0; i < vec.size(); ++i) {    if (vec[i] == target) {        found = true;        break;    }}

// Bom: algoritmo STLbool found = std::find(vec.begin(), vec.end(), target) != vec.end();


Como dar feedback: Em vez de "Isso está errado", diga: "Ótima lógica! A STL tem a função pronta std::find que faz o mesmo, mas de forma mais curta e segura. Vamos tentar usá-la?".



3. Estilo de código, nomenclatura e constância



Legibilidade do código é metade do sucesso. Mesmo um código perfeitamente funcional é inútil se não puder ser mantido.



O que observar:

  • Nomenclatura: Variáveis — snake_case (padrão C++), classes — PascalCase. Evite nomes de uma letra (exceto i para contadores).
  • Constância: Parâmetros que não mudam devem ser const. Métodos que não alteram o objeto — const.
  • Formatação: Estilo único de indentação (geralmente 4 espaços), espaços ao redor de operadores.
  • Números mágicos: Coloque-os em constantes (constexpr int MAX_SIZE = 100;).


// Ruim: ilegívelint a = 5;for(int i=0;i<10;i                

Blogs

Book Recommendations