Google có các thực tiễn đánh giá mã tốt nhất ở bất kỳ nơi nào tôi từng thấy. Mọi người tôi gặp ở đó hoàn toàn đồng ý về cách thực hiện đánh giá mã. Câu thần chú là "xem xét sớm và thường xuyên".
Giả sử bạn sử dụng một quy trình trông giống như những gì Graham Lee đề xuất. (Đó là một quá trình trước đây tôi đã sử dụng bản thân mình.) Vấn đề là các nhà đánh giá đang được yêu cầu xem xét các đoạn mã lớn. Đó là một nỗ lực nhiều hơn nữa, và khó hơn để có được người đánh giá để làm điều đó. Và khi họ làm điều đó, sẽ khó hơn để họ làm một công việc thấu đáo về nó. Hơn nữa, khi họ nhận thấy các vấn đề về thiết kế, sẽ khó hơn để khiến các nhà phát triển quay lại và làm lại tất cả các mã làm việc của họ để làm cho nó tốt hơn. Bạn vẫn nắm bắt được công cụ và nó vẫn có giá trị, nhưng bạn sẽ không nhận thấy rằng bạn đang thiếu hơn 90% lợi ích.
Ngược lại, Google có đánh giá mã trên mỗi cam kết trước khi có thể đi vào kiểm soát nguồn. Rất nhiều người nghĩ rằng đây sẽ là một quá trình nặng nề. Nhưng nó không hoạt động theo cách đó trong thực tế. Nó trở nên dễ dàng hơn để xem xét các đoạn mã nhỏ trong sự cô lập. Khi các vấn đề được tìm thấy, việc thay đổi thiết kế sẽ ít hơn nhiều vì bạn chưa viết một loạt mã xung quanh thiết kế đó. Kết quả là việc xem xét mã kỹ lưỡng sẽ dễ dàng hơn nhiều và dễ dàng hơn nhiều để khắc phục các sự cố đã thay đổi.
Nếu bạn muốn thực hiện đánh giá mã như Google (mà tôi thực sự, thực sự khuyên dùng), có phần mềm giúp bạn làm như vậy. Google đã phát hành công cụ của họ được tích hợp với Subversion là Rietveld . Go (ngôn ngữ) được phát triển với phiên bản Rietveld được sửa đổi để sử dụng với Mercurial. Có một bản viết lại cho những người sử dụng git tên là Gerrit . Tôi cũng đã thấy hai công cụ thương mại được đề xuất cho việc này, Crucible và Hội đồng Đánh giá .
Phiên bản duy nhất tôi đã sử dụng là phiên bản nội bộ của Rietveld của Google và tôi rất hài lòng với nó.