En mi trabajo tenemos una regla muy simple: los cambios deben ser revisados por al menos otro desarrollador antes de una fusión o confirmación en el tronco . En nuestro caso, esto significa que la otra persona se sienta físicamente con usted en su computadora y revisa la lista de cambios. Este no es un sistema perfecto, pero ha mejorado notablemente la calidad del código.
Si sabe que su código será revisado, eso lo obliga a revisarlo primero. Muchos problemas se hacen evidentes entonces. Según nuestro sistema, debe explicar lo que le hizo al revisor, lo que nuevamente le hace notar problemas que puede haber pasado por alto. Además, si algo en su código no está claro de inmediato para el revisor, es una buena indicación de que se requiere un mejor nombre, un comentario o una refactorización. Y, por supuesto, el revisor también puede encontrar problemas. Además, además de mirar el cambio, el revisor también puede notar problemas en el código cercano.
Hay dos inconvenientes principales para este sistema. Cuando el cambio es trivial, tiene poco sentido que se revise. Sin embargo, debemos cumplir estrictamente las reglas, para evitar la pendiente resbaladiza de declarar que los cambios son "triviales" cuando no lo son. Por otro lado, esta no es una muy buena manera de revisar cambios significativos en el sistema o la adición de nuevos componentes grandes.
Hemos intentado revisiones más formales antes, cuando un desarrollador enviaba un código por correo electrónico para ser revisado al resto del equipo, y luego todo el equipo se reunía y lo discutía. Esto tomó mucho tiempo de todos y, como resultado, estas revisiones fueron pocas y distantes, y solo se revisó un pequeño porcentaje de la base del código. La "otra persona revisa los cambios antes de confirmar" nos ha funcionado mucho mejor.