Theo kinh nghiệm của tôi, cách tốt nhất là để cho nhóm lỗ để thực hiện đánh giá mã. Chúng tôi sử dụng một danh sách gửi thư cam kết trong mỗi dự án nơi bạn có thể theo dõi mọi thay đổi mã cho hệ thống kiểm soát phiên bản. Hầu hết các nhà phát triển của chúng tôi đã đăng ký vào danh sách gửi thư cụ thể của dự án của họ vì họ quan tâm đến việc thay đổi mã.
Khi ai đó nhận thấy một cách xấu trong mã nguồn mới, anh ta sẽ giải thích cho người đi làm cách anh ta có thể làm điều đó tốt hơn, nếu người đi làm là một thực tập sinh, hoặc anh ta bắt đầu một cuộc thảo luận về nó, nếu đó là một người đi làm có kinh nghiệm hơn.
Tất nhiên phương pháp này không đảm bảo rằng tất cả các mã mới được xem xét, đặc biệt là trong thời điểm căng thẳng khi không có thành viên nào trong nhóm giải trí để theo dõi từng thay đổi mã. Ngoài ra, không phải mọi nhà phát triển đều có trách nhiệm để đảm bảo rằng mọi nhà phát triển đều làm tốt công việc của mình, một mình bạn không thể đảm bảo rằng nó được xem xét. Nhưng, ít nhất trong các đội của chúng tôi, luôn có một người quản lý kỹ thuật chịu trách nhiệm về chất lượng kỹ thuật.
Tôi là một fan hâm mộ thực sự của đánh giá mã nếu họ tuân thủ các điểm sau:
- mọi nhà phát triển đều có khả năng xem lại tất cả mã và lập luận theo ý kiến của mình
- không ai có quyền lạm dụng mã người khác
- Mã xấu không chỉ kích hoạt một cuộc thảo luận mà cả mã tốt
- các cuộc thảo luận kết thúc với niềm hạnh phúc cho mọi người tham gia
- đánh giá xảy ra gần như trong thời gian thực, ít nhất là trước khi tính năng được hoàn thành
Điều tôi đã học được là nếu bạn là người xem xét từng dòng mã và nghĩ rằng bạn phải kiểm soát những thứ như chất lượng mã về định dạng mã hoặc hiệu quả mã thì bạn sẽ rất kém hiệu quả vì bạn làm những việc mà máy móc có thể làm bạn. Mục tiêu của bạn là sử dụng một hệ thống tích hợp liên tục để kiểm soát chất lượng xây dựng và mã của từng đóng góp mã. Nếu hệ thống này tạo báo cáo và gửi chúng cho những người đóng góp thì mọi thứ đều hoàn hảo.
Tôi phải thừa nhận rằng nếu bạn phải xem lại mã vì bạn phải kiểm soát hoặc để xếp hạng chất lượng của một lập trình viên, thì những đề xuất của tôi không có ý nghĩa gì. Trong trường hợp này tôi cũng sẽ không xem lại dòng mã nguồn theo từng dòng. Tôi sẽ xem xét những thứ như:
- có vấn đề liên quan đến an ninh
- API dự định được sử dụng
- mã đã áp dụng kiến trúc được chỉ định
- anh ấy đã viết các bài kiểm tra hữu ích (nhưng chỉ khi anh ấy được hướng dẫn ngầm, tôi phải học)
- Tài liệu
- quá trình xây dựng
- ... và một số nữa, có lẽ
Nếu bạn là một nhà phát triển có kinh nghiệm, bạn chắc chắn sẽ luôn tìm thấy những thứ như các vòng lặp mà bạn có thể làm với hiệu suất tốt hơn. Tất nhiên là hữu ích để giải thích những kiến thức khác như vậy nhưng đây không phải là một phần của phiên đánh giá. Nếu có vấn đề hiệu suất đáng kể thì không phải vì anh ấy (hoặc cô ấy) đã sử dụng một biến thể kém hiệu quả hơn của một loại danh sách.
Bởi vì câu hỏi ban đầu là tại sao một số người dường như đánh giá tốt hơn như những người khác, tôi sẽ trả lời rằng những người này có thể xem trước khi đánh giá thực sự bắt đầu, có nghĩa là họ có thể tự chuẩn bị cho họ để họ biết chính xác những gì họ muốn xem lại .