Hướng dẫn và thực hành tốt để xem xét mã bắt buộc [đã đóng]


11

Chúng tôi đang thử đánh giá mã bắt buộc trên mỗi cam kết - không có gì thành chủ mà chưa được xác thực bởi ít nhất 1 người không phải là tác giả - trong một vài lần chạy nước rút. Chúng tôi đã mua từ cả nhà phát triển và quản lý (đó là một tình huống đáng kinh ngạc) và chúng tôi muốn nhận được một số lợi ích mà nó được biết đến:

  • giảm lỗi rõ ràng
  • nhận thức rõ hơn về những thay đổi xảy ra xung quanh dự án
  • "Tôi biết ai đó sẽ xem xét điều này vì vậy tôi sẽ không lười biếng" / hiệu ứng chống cao bồi
  • tăng tính nhất quán trong / trên các dự án

Nhưng chúng tôi đang giới thiệu một cái gì đó được biết là làm giảm vận tốc và nếu làm sai có thể tạo ra một bước quan liêu ngu ngốc trong đường ống cam kết không làm gì ngoài việc mất thời gian. Những điều tôi quan tâm:

  • đánh giá phát triển thành chỉ chọn nit
  • (cường điệu) mọi người mở ra các vấn đề kiến ​​trúc lớn như là một phần của đánh giá cam kết hai dòng.
  • Tôi không muốn thiên vị câu trả lời với những thứ khác.

Mặc dù chúng ta đều là những người hợp lý và chúng ta sẽ tự phân tích rất nhiều, nhưng chúng ta chắc chắn có thể sử dụng một số hiểu biết chiến thắng về những loại việc chúng ta nên cố gắng thực hiện trong phiên đánh giá để thực sự đánh giá cho chúng ta . Một số hướng dẫn và chính sách mà bạn đã tìm thấy để làm việc là gì?

Câu trả lời:


13
  1. Hãy đánh giá ngắn.

    Thật khó để tập trung, đặc biệt là trong quá trình xem xét mã, trong một thời gian dài. Hơn nữa, các đánh giá mã dài có thể chỉ ra rằng có quá nhiều điều để nói về mã (xem hai điểm tiếp theo) hoặc đánh giá trở thành một cuộc thảo luận về các vấn đề lớn hơn, chẳng hạn như kiến ​​trúc.

    Ngoài ra, một đánh giá nên vẫn là một đánh giá, không phải là một cuộc thảo luận. Điều đó không có nghĩa là tác giả của mã không thể trả lời, nhưng nó không nên biến thành một cuộc trao đổi ý kiến ​​dài.

  2. Tránh xem lại mã quá tệ.

    Việc xem xét mã chất lượng thấp đang gây áp lực cho cả người đánh giá và tác giả của mã. Nếu một đoạn mã là khủng khiếp, đánh giá mã không hữu ích. Thay vào đó, tác giả nên được yêu cầu viết lại mã chính xác.

  3. Sử dụng kiểm tra tự động trước khi xem xét.

    Kiểm tra tự động tránh lãng phí thời gian quý báu chỉ ra những sai lầm có thể được tìm thấy tự động. Ví dụ: đối với mã C #, chạy StyleCop, số liệu mã và đặc biệt là phân tích mã là cơ hội tốt để tìm một số lỗi trước khi xem xét. Sau đó, đánh giá mã có thể được dành cho các điểm cực kỳ khó thực hiện cho máy.

  4. Chọn cẩn thận những người làm đánh giá.

    Hai người không thể chịu đựng nhau sẽ không đánh giá tốt một trong những mã của người khác. Vấn đề tương tự phát sinh khi một người không tôn trọng người khác (nhân tiện, dù đó là người đánh giá hay tác giả).

    Ngoài ra, một số người không thể xem mã của họ được xem xét, vì vậy họ yêu cầu đào tạo và chuẩn bị cụ thể để hiểu rằng họ không bị chỉ trích và họ không nên xem đó là điều gì đó tiêu cực. Thực hiện đánh giá, không chuẩn bị, sẽ không giúp ích gì, vì họ sẽ luôn phòng thủ và sẽ không lắng nghe bất kỳ lời phê bình nào về mã của họ (lấy mọi lời đề nghị làm chỉ trích).

  5. Làm cả hai đánh giá không chính thức và chính thức.

    Có một danh sách kiểm tra giúp tập trung vào một bộ lỗ hổng chính xác, tránh để chuyển sang chọn nit. Danh sách kiểm tra này có thể chứa các điểm như:

    • SQL tiêm,
    • Giả định sai về một ngôn ngữ có thể dẫn đến lỗi,
    • Các tình huống cụ thể có thể dẫn đến lỗi, chẳng hạn như quyền ưu tiên của nhà điều hành. Ví dụ, trong C #, var a = b ?? 0 + c ?? 0;có thể trông ổn đối với người muốn thêm hai số không có giá trị với số kết hợp bằng 0, nhưng không phải vậy.
    • Phân bổ bộ nhớ,
    • Tải lười biếng (với hai rủi ro của nó: tải cùng một thứ nhiều hơn một lần và hoàn toàn không tải nó),
    • Tràn,
    • Cấu trúc dữ liệu (với các lỗi như danh sách đơn giản thay vì bộ băm chẳng hạn),
    • Xác nhận đầu vào và lập trình phòng thủ nói chung,
    • An toàn chủ đề,
    • Vân vân.

    Tôi dừng danh sách ở đây, nhưng có hàng trăm điểm có thể nằm trong danh sách kiểm tra, tùy thuộc vào điểm yếu của một tác giả chính xác.

  6. Điều chỉnh dần danh sách kiểm tra.

    Để duy trì tính xây dựng và hữu ích theo thời gian, danh sách kiểm tra được sử dụng trong các đánh giá chính thức nên được điều chỉnh theo thời gian tùy thuộc vào các lỗi được tìm thấy. Ví dụ: các đánh giá không chính thức đầu tiên có thể tiết lộ một số rủi ro nhất định của SQL Injection. Kiểm tra SQL tiêm sẽ được bao gồm trong danh sách kiểm tra. Khi, một vài tháng sau, có vẻ như tác giả hiện đang rất cẩn thận về các truy vấn động so với tham số, SQL Injection có thể bị xóa khỏi danh sách kiểm tra.


-Bất kỳ ví dụ nào về những gì nên có trong danh sách kiểm tra đánh giá mã? - Hãy để tôi tự google.
quodlibetor

@quodlibetor: Tôi đã chỉnh sửa câu trả lời của mình để bao gồm một vài ví dụ.
Arseni Mourzenko

2

Chúng tôi gần như một danh sách kiểm tra:

  • Chỉ cho tôi mô tả nhiệm vụ.
  • Đưa tôi qua kết quả, và cho thấy nó hoạt động. Chạy các kịch bản khác nhau (đầu vào không hợp lệ, vv).
  • Chỉ cho tôi các bài kiểm tra vượt qua. Phạm vi kiểm tra như thế nào?
  • Cho tôi xem mã - đó là nơi chúng tôi đang tìm kiếm sự thiếu hiệu quả rõ ràng.

Hoạt động khá tốt.


0

Tôi nghĩ rằng một người có quyền lực đối với những người khác sẽ là đủ, quản trị viên hoặc người điều hành để cắt giảm các bình luận không liên quan, tăng tốc xem xét những thứ cần xem xét nhanh. Người ra quyết định duy nhất.

Điểm trừ của việc này là người này phải thực hiện nó như là nhiệm vụ chính, trong khi anh ta có thể làm việc khác, và có lẽ bạn muốn có người có kinh nghiệm nhất ở vị trí này.

Điều thứ hai là tự động hóa càng nhiều càng tốt!

  • kiểm soát khoảng trắng
  • phần mềm kiểm soát phong cách
  • xây dựng tự động trước khi xem xét mã
  • kiểm tra tự động trước khi xem xét mã

Những điều đó sẽ loại bỏ ít nhất một số điều mà mọi người có thể nhận xét mà không cần thực sự. Nếu nó không được xây dựng hoặc có các khoảng trắng ở cuối thì không đủ để xem xét, hãy sửa nó và đăng ký lại. Nếu nó không được xây dựng hoặc một số thử nghiệm thất bại thì rõ ràng là nó không đủ tốt.

Rất nhiều phụ thuộc vào công nghệ của bạn, nhưng hãy tìm những gì bạn có thể kiểm tra tự động càng tốt.

Chúng tôi chưa chiến thắng trận chiến này, nhưng đó là những gì chúng tôi thấy hữu ích.


Chúng tôi đang thực hiện kiểu ngang hàng này, không ai có quyền tuyệt đối để cam kết / chặn thay đổi. Nếu có bất đồng, chúng tôi sẽ kêu gọi sự đồng thuận của nhóm. Điều đó sẽ gây ra sự chậm lại nhưng cũng hy vọng làm tăng tính cố kết của mã hóa của mọi người.
quodlibetor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.