Code Review
Camada: Arquitetura — Padrões e boas práticas técnicas para o time de desenvolvimento. Aplica-se a: Todo o processo de revisão de código do CRM.
1. Práticas da Equipe
- Documente e padronize o processo de revisão de código — todos devem conhecê-lo.
- Garanta que a Definição de Pronto (DoD) esteja documentada e clara para todos.
- Defina um processo formal de resolução de conflitos em revisões.
- Mantenha um guia de estilo definitivo — ele é a autoridade absoluta em questões de estilo.
- Use automação para acelerar revisões: linting, formatação, análise estática.
- Defina SLAs claros para prazos de revisão — uma PR não deve ficar bloqueada.
- Use as revisões como oportunidade de compartilhamento de conhecimento.
- Incentive revisões em áreas desconhecidas para ampliar o conhecimento do time.
- Reconheça e valorize feedback de qualidade consistente.
- Realize sessões periódicas para discutir padrões e tendências identificadas nas revisões.
2. Antes de Abrir o PR (Autor)
- Siga os padrões de codificação e diretrizes da equipe.
- Mantenha consistência com o design e a arquitetura existente do projeto.
- Divida tarefas complexas em PRs menores e fáceis de revisar.
- Escreva testes automatizados para a mudança — se é um bugfix, escreva um teste que falhe sem a correção.
- Escreva ou atualize a documentação afetada.
- Considere o impacto da mudança em outras partes do sistema.
- Anote dúvidas e pontos de atenção para discutir durante a revisão.
3. Ao Submeter o PR (Autor)
- Revise seu próprio código antes de abrir a PR.
- Verifique se as mudanças foram testadas em ambiente de desenvolvimento.
- Confirme que o código segue os padrões de codificação.
- Identifique previamente riscos de performance, segurança ou escalabilidade e documente-os na PR.
- Preencha adequadamente: título, descrição, screenshots, links relevantes e alterações de configuração.
- Aborde o processo com mente aberta para colaboração.
4. Antes de Revisar (Revisor)
- Compreenda os requisitos e o contexto da mudança.
- Prepare uma lista de itens que deveriam ser cobertos pelas alterações.
- Certifique-se de entender a base de código e a arquitetura afetada.
- Revise documentações e especificações de design relacionadas.
- Identifique riscos potenciais antes de iniciar a revisão.
- Determine o nível de revisão adequado com base no escopo e impacto.
5. Durante a Revisão (Revisor)
- Seja respeitoso e profissional — sem ataques pessoais ou comentários depreciativos.
- Forneça feedback claro e acionável com sugestões específicas de melhoria.
- Priorize o feedback — comece pelos problemas mais críticos.
- O guia de estilo da equipe é a autoridade absoluta em estilo — não substitua por preferências pessoais.
- Prefixe comentários não-críticos com "Nit:" para deixar claro que não são bloqueantes.
- Revise todos os testes para verificar cobertura adequada da funcionalidade.
- Confirme que a documentação relevante foi atualizada.
- Identifique preocupações de performance, segurança e escalabilidade.
- Busque melhoria contínua, não perfeição.
- Forneça também feedback positivo — reforce boas práticas.
- Considere programação em pares como alternativa para trechos complexos.
6. Após o Feedback (Autor)
- Enderece todos os feedbacks recebidos.
- Implemente as mudanças sugeridas e explique decisões quando necessário.
- Execute os testes e certifique-se de que todos passam após as alterações.
- Atualize documentação e comentários de código afetados.
- Busque feedback de outros membros se houver dúvida sobre as mudanças.
- Submeta para segunda revisão se as mudanças foram significativas.
7. Segunda Revisão (Revisor)
- Resolva opiniões conflitantes em tempo hábil — não deixe PR parada por discordância.
- Verifique se todos os feedbacks foram endereçados.
- Execute os testes novamente e confirme que passam.
- Esteja aberto ao feedback do autor sobre suas sugestões.
8. Após a Aprovação (Ambos)
- Faça o merge na branch principal/de feature.
- Verifique se a mudança está funcionando conforme esperado em produção.
- Monitore performance e funcionalidade após o deploy.
- Resolva prontamente qualquer problema que surgir.