Sau một số vấn đề nghiêm trọng về chất lượng trong năm ngoái, công ty của tôi gần đây đã giới thiệu các bài đánh giá mã. Quá trình xem xét mã đã nhanh chóng được giới thiệu, không có hướng dẫn hoặc bất kỳ loại danh sách kiểm tra nào.
Một nhà phát triển khác và tôi đã chọn để xem xét tất cả các thay đổi được thực hiện cho các hệ thống, trước khi chúng được hợp nhất vào thân cây.
Chúng tôi cũng được chọn là "Trưởng nhóm kỹ thuật". Điều này có nghĩa là chúng tôi chịu trách nhiệm về chất lượng mã, nhưng chúng tôi không có thẩm quyền để thực hiện các thay đổi trong quy trình, phân công lại các nhà phát triển hoặc giữ lại các dự án.
Về mặt kỹ thuật, chúng ta có thể từ chối hợp nhất, đưa nó trở lại phát triển. Trong thực tế, điều này kết thúc gần như luôn luôn với ông chủ của chúng tôi yêu cầu rằng nó được vận chuyển đúng thời gian.
Quản lý của chúng tôi là một MBA, người chủ yếu quan tâm đến việc tạo ra một lịch trình của các dự án sắp tới. Trong khi anh ta đang cố gắng, anh ta gần như không biết phần mềm của chúng tôi làm gì từ quan điểm kinh doanh và đang đấu tranh để hiểu ngay cả những yêu cầu cơ bản nhất của khách hàng mà không cần giải thích từ nhà phát triển.
Hiện tại việc phát triển được thực hiện trong các chi nhánh phát triển ở SVN, sau khi nhà phát triển nghĩ rằng anh ta đã sẵn sàng, anh ta chỉ định lại vé trong hệ thống bán vé của chúng tôi cho người quản lý của chúng tôi. Người quản lý sau đó giao nó cho chúng tôi.
Các đánh giá mã đã dẫn đến một số căng thẳng trong nhóm của chúng tôi. Đặc biệt là một số thành viên lớn tuổi đặt câu hỏi về những thay đổi (Tức là "Chúng tôi luôn làm như vậy" hoặc "Tại sao phương pháp nên có một cái tên hợp lý, tôi biết nó làm gì?").
Sau vài tuần đầu, đồng nghiệp của tôi bắt đầu để mọi thứ trôi qua, để không gây rắc rối với đồng nghiệp (cô ấy nói với tôi rằng sau khi một khách hàng báo cáo lỗi, cô ấy biết về lỗi, nhưng sợ rằng nhà phát triển sẽ tức giận với cô ấy vì đã chỉ ra nó).
Tôi, mặt khác, bây giờ được biết đến là một ass để chỉ ra các vấn đề với mã cam kết.
Tôi không nghĩ rằng tiêu chuẩn của tôi quá cao.
Danh sách kiểm tra của tôi tại thời điểm này là:
- Mã sẽ biên dịch.
- Có ít nhất một cách mã sẽ hoạt động.
- Mã sẽ làm việc với hầu hết các trường hợp bình thường.
- Mã sẽ làm việc với hầu hết các trường hợp cạnh.
- Mã sẽ ném ngoại lệ hợp lý nếu dữ liệu được chèn không hợp lệ.
Nhưng tôi hoàn toàn chấp nhận trách nhiệm của cách tôi đưa ra phản hồi. Tôi đã đưa ra những điểm có thể hành động để giải thích lý do tại sao một cái gì đó nên được thay đổi, đôi khi thậm chí chỉ hỏi tại sao một cái gì đó được thực hiện theo một cách cụ thể. Khi tôi nghĩ nó là xấu, tôi chỉ ra rằng tôi sẽ phát triển nó theo một cách khác.
Điều tôi còn thiếu là khả năng tìm ra thứ gì đó để chỉ ra là "tốt". Tôi đọc rằng người ta nên cố gắng kẹp tin xấu trong tin tốt.
Nhưng tôi đang có một thời gian khó khăn để tìm thấy một cái gì đó là tốt. "Này lần này bạn thực sự cam kết tất cả mọi thứ bạn đã làm" là hạ thấp hơn là tốt đẹp hoặc hữu ích.
Xem lại mã ví dụ
Này Joe
Tôi có một số câu hỏi về những thay đổi của bạn trong Lớp Thư viện \ ACME \ ExtractOrderMail.
Tôi không hiểu tại sao bạn đánh dấu "TempFilesToDelete" là tĩnh? Hiện tại, một cuộc gọi thứ hai đến "GetMails" sẽ đưa ra một ngoại lệ, bởi vì bạn thêm Tệp vào đó nhưng không bao giờ xóa chúng, sau khi bạn xóa chúng. Tôi biết rằng chức năng chỉ được gọi một lần mỗi lần chạy, nhưng trong tương lai điều này có thể thay đổi. Bạn có thể biến nó thành một biến đối tượng, sau đó chúng ta có thể có nhiều đối tượng song song.
... (Một số điểm khác không hoạt động)
Điểm nhỏ:
- Tại sao "GetErrorMailBody" lấy Ngoại lệ làm Thông số? Tôi đã bỏ lỡ một cái gì đó? Bạn không ném ngoại lệ, bạn chỉ cần vượt qua nó và gọi "ToString". Tại sao vậy?
- SaveAndSend Không phải là một tên hay cho Phương thức. Phương pháp này sẽ gửi thư lỗi nếu quá trình xử lý thư bị sai. Bạn có thể đổi tên nó thành "SendErrorMail" hoặc một cái gì đó tương tự không?
- Xin đừng chỉ nhận xét mã cũ, xóa nó hoàn toàn. Chúng tôi vẫn có nó trong lật đổ.