Concrete | Realizando Code Reviews Eficientes
Durante o processo de desenvolvimento de software o time de desenvolvimento pode adotar como Definition of Done uma etapa de Code Review. Por mais que muitas equipes ainda encarem como perda de tempo, essa etapa pode trazer grandes vantagens na garantia da qualidade das implementações.
"O Code Review de pares é a maior coisa que você pode fazer para melhorar o seu código." Jeff Atwood
As principais vantagens de um Code Review bem realizado são:
Compartilhar conhecimento sobre a base de código;
Encontrar possíveis bugs e vulnerabilidades de segurança;
Propor diferentes abordagens para um mesmo problema;
Garantir que o código segue os padrões de arquitetura.
Vamos ver algumas formas de tornar o Code Review mais eficiente?
1. Revise apenas o que faz sentido
Se concentre em questões que fazem realmente a diferença. Delegue a responsabilidade de estilos de código para o Linter e as formatações para o EditorConfig. Isso torna os Code Reviews mais rápidos e as correções mais pontuais.
2. Todos devem fazer uma revisão
A responsabilidade não é exclusiva do mais sênior. Cada pessoa tem sua própria perspectiva sobre o código, podendo propor abordagens melhores em qualquer solução. Para que isso seja possível, todos devem buscar se familiarizar com o problema.
3. Pessoas não estão sendo avaliadas
Isso é tão importante para os revisores quanto para quem está submetendo. O feedback que o código recebe durante o Code Review não torna o desenvolvedor que escreveu o código bom ou ruim.
Se você está revisando o código, não seja grosseiro em seu feedback. Mesmo que tudo esteja muito ruim, sempre há uma forma educada de comunicar isso.
A aplicação de uma checklist garante consistência durante o Code Review. Segue um exemplo:
O código está compreensível?
Existe algum código de depuração que deve ser removido? (por exemplo pdb ou console.log)
O código respeita os princípios S.O.L.I.D?
Existe algum código redundante ou duplicado?
O código está seguindo o padrão estrutural?
As possíveis exceções estão sendo tratadas?
Os identificadores das variáveis e métodos estão coerentes?
O código está suficientemente documentado?
Existe alguma implementação incompleta? Se existir deve ser removido ou marcado com um TO DO.
O código possui testes unitários e de integração suficientes?
Os testes estão resultando em sucesso?
Os testes unitários realmente testam o código? (cuidado com Mocks)
Os requisitos foram atendidos?
5. Código bom é uma questão de ponto de vista
A classificação de um código como sendo bom ou ruim é muitas vezes subjetivo. Como uma boa solução relativa, as propostas devem ser encaradas como sugestões de mudanças. Mas sempre leve em consideração que o código é escrito para pessoas.
Quando identificar algum código ou técnica notável, não economize nos elogios. As pessoas se tornam mais receptivas depois de receberem um feedback positivo. Procure realizar elogios com emojis.
6. O Code Review deve ser rápido
Isso não significa que o tempo deve ser um fator limitante para o Code Review. Evite submeter muito código para revisão, o ideal é o máximo de 400 linhas. Fazer mudanças pequenas e consistentes é melhor e mais seguro do que bigbangs que podem realizar vários impactos não previstos e difíceis de identificar.
Pegar o código e testar não é uma boa ideia, isso aumenta consideravelmente o tempo de Code Review. Não é aconselhável delegar a obrigação do funcionamento do código para quem está revisando. A recomendação é que os testes sejam executados em alguma ferramenta de CI, como o Jenkins ou Travis. Se você está revisando, peça que escrevam testes.
A única coisa que impede um time de realizar Code Review é a vontade. Adotá-lo como etapa do processo de desenvolvimento e torná-lo requisito para as entregas melhora a qualidade do código produzido. Por mais que neste post o Code Review tenha sido abordado como um processo, ele deve ser encarado como uma cultura. O Code Review é uma garantia de qualidade.
Tem algo a acrescentar? Aproveite os campos abaixo! E se você quiser saber mais sobre o assunto, vou deixar aqui algumas referências. Até a próxima!
https://pt.slideshare.net/tonicospinelli/compartilhando-qualidade-e-conhecimento-com-code-review-74646250
https://tech.vivareal.com.br/revis%C3%A3o-de-c%C3%B3digo-boas-pr%C3%A1ticas-para-garantir-a-qualidade-2077434cd32d
http://www.andrefonseca.net/blog/2013/09/28/code-review/
É desenvolvedor web e quer trabalhar com times ágeis e multidisciplinares de verdade? Clique aqui.
Full-Stack Developer da Concrete. Pythonista apaixonado por front-end que não tem medo de entrar na briga entre as novas tecnologias.