Qual é o propósito de uma revisão de código?

74

Estou no processo de tentar vender minha organização sobre o valor das revisões de código. Eu trabalhei em vários lugares onde eles estavam empregados. Eu os vi acostumados a identificar escolhas de estilo e decisões funcionais, e eu os vi sendo usados como nada mais do que um teste de coragem para ter certeza de que nada de perigoso está sendo implementado. Minha intuição é que o propósito mais eficaz está em algum lugar entre as duas opções.

Então, qual é o propósito de uma revisão de código?

    
por SoylentGray 10.09.2014 / 21:34
fonte

4 respostas

75

Existem vários motivos pelos quais você deseja realizar uma análise de código:

  • Educação de outros desenvolvedores. Certifique-se de que todos vejam a modificação associada a uma correção ou aprimoramento de defeitos para que eles possam entender o restante do software. Isso é especialmente útil quando as pessoas estão trabalhando em componentes que precisam ser integrados ou em sistemas complexos em que uma pessoa pode passar longos períodos sem olhar para determinados módulos.
  • Encontrar defeitos ou oportunidades de melhoria. Tanto o código de entrega quanto o código de teste e os dados podem ser examinados para encontrar pontos fracos. Isso garante que o código de teste seja robusto e válido e que o design e a implementação sejam consistentes em todo o aplicativo. Se houver necessidade de alterações adicionais, ela aproxima a oportunidade do ponto de entrada.

Existem vários casos de negócios para a realização de revisões:

  • Encontrar defeitos ou problemas que precisariam ser retrabalhados mais próximos da injeção. Isso é mais barato.
  • Compreensão compartilhada do sistema e treinamento cruzado. Menos tempo para que um desenvolvedor acelere para fazer alterações.
  • Identificação de possíveis melhorias no sistema.
  • Abrindo a implementação para garantir que os testadores estejam fornecendo cobertura adequada. Transformando uma caixa preta em uma caixa cinza ou caixa branca de uma perspectiva de teste.

Se você estiver procurando por uma discussão abrangente sobre os benefícios e as estratégias de implementação de avaliações entre colegas, recomendamos que você consulte Peer Reviews in Software: Um guia prático de Karl Wiegers .

    
por 10.09.2014 / 21:53
fonte
49

As revisões de código são uma ferramenta para transferência de conhecimento .

  • Quando os desenvolvedores revisam o código um do outro, eles ganham familiaridade em todas as áreas do sistema. Isso reduz o fator de barramento de um projeto e torna os desenvolvedores mais eficientes ao fazer manutenção em uma parte do sistema que eles não escreveram.

  • Quando um programador júnior revisa o código de um idoso, o programador júnior pode pegar truques que, de outra forma, só seriam aprendidos com a experiência. Isso também pode funcionar como um corretivo contra código excessivamente complicado.

    Uma revisão completa do código exigirá verificações freqüentes de vários documentos. É uma ótima maneira de aprender um idioma ou uma API.

  • Quando um programador sênior revisa o código de um junior, esta é uma oportunidade para resolver problemas antes que eles traduzem em dívida técnica. Uma revisão de código pode ser uma boa configuração para a orientação de programadores juniores.

As revisões de código não são sobre:

  • … encontrando bugs. Isso é o que os testes são para. Ainda ocorrerá freqüentemente que uma revisão de código encontre algum problema.

  • … nitpicking em questões de estilo - escolha um estilo e use formatadores automatizados para aplicá-lo. Mas há muitas coisas que uma ferramenta automatizada não pode verificar. As revisões de código são um bom local para garantir que o código esteja suficientemente documentado ou autodocumentado.

por 10.09.2014 / 22:09
fonte
11

A coisa mais valiosa que eu pessoalmente recebo de uma revisão de código é a confiança de que o código é claro para outra pessoa. As variáveis são claramente nomeadas? O propósito de cada pedaço de código é razoavelmente óbvio? Alguma coisa ambígua é esclarecida com um comentário? Os casos de borda e os valores válidos para parâmetros são descritos nos comentários e verificados no código?

    
por 11.09.2014 / 15:07
fonte
6

Gostaria de adicionar duas áreas não cobertas pelas outras excelentes respostas:

Um grande motivo para revisões de código é o efeito Hawthorne que, no nosso caso, significa: Se você sabe que alguém vai para olhar para o seu código depois, então é muito mais provável que você o escreva melhor em primeiro lugar.

Outra grande razão é para práticas de desenvolvimento mais seguras. Basta olhar para O goto da Apple falha (uma linha de código duplicada acidental) ou o Heartbleed bug (uma falha básica na validação de entrada) para entender a importância das revisões de código adequadas em um ciclo de vida de desenvolvimento seguro.

    
por 17.09.2014 / 00:17
fonte