No meu trabalho, temos uma regra muito simples: as alterações devem ser revisadas por pelo menos um outro desenvolvedor antes de uma mesclagem ou confirmação do tronco . No nosso caso, isso significa que a outra pessoa se senta fisicamente com você no seu computador e passa pela lista de alterações. Este não é um sistema perfeito, mas, no entanto, melhorou notavelmente a qualidade do código.
Se você sabe que seu código será revisado, obriga você a analisá-lo primeiro. Muitos problemas se tornam aparentes então. De acordo com o nosso sistema, você precisa explicar o que fez ao revisor, o que novamente faz com que você note problemas que talvez já tenham esquecido. Além disso, se algo no seu código não estiver imediatamente claro para o revisor, isso é uma boa indicação de que é necessário um nome melhor, um comentário ou uma refatoração. E, é claro, o revisor também pode encontrar problemas. Além disso, além de analisar a alteração, o revisor também pode perceber problemas no código próximo.
Existem duas desvantagens principais neste sistema. Quando a mudança é trivial, faz pouco sentido revisá-la. No entanto, temos absolutamente de nos ater às regras, para evitar a inclinação escorregadia de declarar que as alterações são "triviais" quando não o são. Por outro lado, essa não é uma maneira muito boa de revisar alterações significativas no sistema ou adicionar novos e grandes componentes.
Tentamos análises mais formais antes, quando um desenvolvedor enviava um código por e-mail para ser revisado para o restante da equipe e, em seguida, toda a equipe se reunia e discutia. Isso levou muito tempo para todos e, como resultado, essas revisões foram poucas e distantes, e apenas uma pequena porcentagem da base de código foi revisada. A "outra pessoa revisa as alterações antes de confirmar" funcionou muito melhor para nós.