Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Code Review

###Code Review

É uma técnica onde o desenvolvedor tem seu código revisado por outro desenvolvedor antes de commitar o código.

O commitador deve explicar cada arquivo que está sendo commitado, tanto do ponto de vista técnico quanto de negócio.

Cada trecho de código apontado como alteração pelo "diff" deve ser devidamente explicado ao revisor.

É papel do revisor questionar sobre o código, sugerir melhorias e exigir detalhes sobre a regra de negócio.

É papel do commiter saber explicar seu código bem como a regra de negócio; escutar as sugestões do revisor e aplicá-las SEMPRE que possível.

Q: Parar dois profissionais não seria ineficiente?

A curto prazo, o code review pode ser visto como perda de tempo, porém a médio prazo os ganhos superam as desvatagens. Com o passar do tempo, e conforme os devs vão se habituando a fazer o code review, o processo passa a ser parte do dia a dia de todos, levando cada vez menos tempo para ser concluido.

Também sugere-se que os commits não sejam muito grandes, pois dificultará a explicação e compreensão dos envolvidos. Commits longos devem ser feitos SOMENTE se estritamente necessários, como alterações no core da aplicação

###Objetivo

  • Funciona como um pré teste
  • Filtrar erros superficiais, potencialmente graves
  • Previnir quebra do build
  • Aumentar a capacitação dos desenvolvedores
  • Procedimento informal de qualidade ainda na fase de desenvolvimento

###Vantagens

  • Aumento de produtividade: menos problemas
  • Sem custo adicional para a empresa
  • Compartilhar conhecimento técnico
  • Compartilhar conhecimento do produto
  • Self improvement: Você acaba identificando deficiências enquanto explica seu próprio código

###Como funciona

  • O commiter deve solicitar a alguem que revise seu código
  • Ele deve dar uma visão geral sobre do que se trata esse commit. Que problema está sendo resolvido, etc;
  • O review não costuma demorar mais do que 15 minutos. Se esse tempo for ultrapassado, o commit pode estar muito grande. Nesse caso, esse hábito precisa ser evitado;
  • O revisor deve se empenhar em tirar dúvidas, fazer sugestões, se relevante, e entender o motivo da alteração;
  • O commiter deve se preocupar em descrever o que a mudança está resolvendo, estar aberto para receber sugestões e apto a avaliar se as sugestões são de fato relevantes
  • Em caso de discórdia, os envolvidos devem entrar em concenso, mesmo que seja necessário uma segunda etapa futura, para resolver pendÊncias do commit atual
  • Opcionalmente, adicionar o nome do revisor no comentário do commit

###O que sugerir

  • uso correto de APIs;
  • coerência com melhores práticas;
  • coerência com convenção de desenvolvimento;

###O que não sugerir

  • Alternativa da solução de negócio;
  • Opinião sobre o problema;
  • Opinião sobre a forma que o indivíduo trabalha;

###Como aderir sem traumas

  • O commiter deve escolher uma pessoa conhecida para revisar o código, para facilitar a comunicação
  • Ambos devem estipular um tempo médio de 15 a 20 minutos. Tempo razoável para esclarecimento de dúvidas
  • O code review deve ser acompanhado por uma pessoa familiarizada com o processo para dar orientações
@caarlos0

This comment has been minimized.

Show comment Hide comment
@caarlos0

caarlos0 Jul 5, 2013

Acho que é válido citar o esquema de pull-requests do github =)

caarlos0 commented Jul 5, 2013

Acho que é válido citar o esquema de pull-requests do github =)

@dstori

This comment has been minimized.

Show comment Hide comment
@dstori

dstori Jul 5, 2013

Me gustou

dstori commented Jul 5, 2013

Me gustou

@chambs

This comment has been minimized.

Show comment Hide comment
@chambs

chambs Jul 5, 2013

Carlos, embora eu concorde com vc, a técnica de code review está diretamente associada com outras práticas bacanas. Mas, pra esse documento eu acho mais relevante manter foco no assunto. Code review é independente de linguagem, CVS, religião e gosto musical.

O que a gente pode fazer (e eu sei que tem mais gente que iria gostar de participar) é nos unirmos pra fazer uma compilação de todas essas boas práticas e gerar um material único. Que achas?

Owner

chambs commented Jul 5, 2013

Carlos, embora eu concorde com vc, a técnica de code review está diretamente associada com outras práticas bacanas. Mas, pra esse documento eu acho mais relevante manter foco no assunto. Code review é independente de linguagem, CVS, religião e gosto musical.

O que a gente pode fazer (e eu sei que tem mais gente que iria gostar de participar) é nos unirmos pra fazer uma compilação de todas essas boas práticas e gerar um material único. Que achas?

@caarlos0

This comment has been minimized.

Show comment Hide comment
@caarlos0

caarlos0 Jul 5, 2013

Fully agreed!

Quanto ao pull-request, não me expliquei, desculpe.

O que eu deveria ter dito é: citar como a comunidade OSS utiliza as pull-requests como forma de code review "async", no caso, sem a necessidade de parar dois profissionais ao mesmo tempo, e ficando livre para "qualquer um" fazer uma análise do código também.

Isso poderia ser utilzado como argumento tanto para o code review quanto para o uso de git e cia =)

caarlos0 commented Jul 5, 2013

Fully agreed!

Quanto ao pull-request, não me expliquei, desculpe.

O que eu deveria ter dito é: citar como a comunidade OSS utiliza as pull-requests como forma de code review "async", no caso, sem a necessidade de parar dois profissionais ao mesmo tempo, e ficando livre para "qualquer um" fazer uma análise do código também.

Isso poderia ser utilzado como argumento tanto para o code review quanto para o uso de git e cia =)

@jtomaszon

This comment has been minimized.

Show comment Hide comment
@jtomaszon

jtomaszon Aug 1, 2013

https://www.atlassian.com/software/crucible/overview

Code reviews = Quality code.
Review code, discuss changes, share knowledge and identify defects with Crucible's flexible review workflow. It's code review made easy for Subversion, CVS, Perforce and more.

https://www.atlassian.com/software/crucible/overview

Code reviews = Quality code.
Review code, discuss changes, share knowledge and identify defects with Crucible's flexible review workflow. It's code review made easy for Subversion, CVS, Perforce and more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment