Mã đã được viết và những nỗ lực đã được bỏ ra
Nó cũng không cần thiết. Nếu bạn không sử dụng nó cho bất cứ việc gì, nó (theo định nghĩa) sẽ vô dụng, bất kể nó làm gì hoặc đã bỏ ra bao nhiêu công sức cho nó.
Mã có thể được kiểm tra trên môi trường thực và ngữ đoạn
Nếu nó vô dụng, nó vẫn vô dụng cho dù bạn có kiểm tra nó. Nếu mã vô dụng, các bài kiểm tra đối với nó cũng sẽ vô dụng (vì vậy việc giữ mã nhận xét ở đó sẽ tạo ra sự mơ hồ - bạn có giữ các bài kiểm tra không? Nếu bạn có mã khách hàng của mã nhận xét, bạn có nhận xét mã khách hàng không? )
Nếu được tổ chức tốt (nhóm, gói riêng biệt, kết hợp lỏng lẻo, v.v.), nó không làm phiền bạn về phân tích mã tổng thể hoặc tái cấu trúc
Không phải vậy. Tất cả các công cụ của bạn (kiểm soát nguồn, phân tích tĩnh, trình trích xuất tài liệu, trình biên dịch, v.v.) sẽ chạy chậm hơn, vì chúng phải xử lý nhiều dữ liệu hơn (và một phần lớn hơn hoặc nhỏ hơn của dữ liệu đó là nhiễu).
Mặt khác, nếu mã không được tổ chức tốt, nó sẽ làm xáo trộn phân tích tĩnh, tái cấu trúc và bất kỳ hoạt động nào khác.
Bạn đang giới thiệu tiếng ồn cho đầu vào công cụ của bạn và hy vọng họ xử lý đúng với nó.
Điều gì sẽ xảy ra nếu công cụ phân tích tĩnh của bạn tính toán tỷ lệ nhận xét / mã? Bạn chỉ làm nó rối tung lên, với một cái gì đó có liên quan đến ngày hôm qua (hoặc bất cứ khi nào mã được nhận xét).
Có liên quan nhất, các khối mã được nhận xét gây ra sự chậm trễ trong việc hiểu mã để bảo trì và phát triển thêm và những sự chậm trễ như vậy hầu như luôn phải trả giá đắt. Hãy tự hỏi bản thân điều này: Nếu bạn cần hiểu việc triển khai một hàm, bạn muốn xem xét điều gì? hai dòng mã rõ ràng, hay hai dòng mã và hai mươi sáu nhận xét khác không còn thực tế?
Mã có thể được sử dụng trong tương lai
Nếu có, bạn sẽ tìm thấy nó trong SCM của nhóm bạn lựa chọn.
Nếu bạn sử dụng một SCM có thẩm quyền và dựa vào nó để giữ mã chết (thay vì làm lộn xộn nguồn), bạn sẽ không chỉ biết ai đã xóa mã đó (tác giả cam kết), mà còn vì lý do gì (thông báo cam kết) và những gì khác các thay đổi đã được thực hiện cùng với nó (phần còn lại của các khác biệt cho cam kết đó).
Khi bị xóa, tác giả có thể cảm thấy khó chịu
Vì thế?
Bạn (tôi giả sử) là cả một nhóm các nhà phát triển được trả tiền để tạo ra phần mềm tốt nhất mà bạn biết, không phải là "phần mềm tốt nhất mà bạn biết cách làm mà không làm tổn thương cảm xúc của X".
Đó là một phần của lập trình, phần lớn mã được viết cuối cùng sẽ bị loại bỏ; chẳng hạn, Joel Spolsky đã nói vào một thời điểm nào đó rằng đối với công ty của anh ấy, khoảng 2% mã được viết cho thấy sản xuất.
Nếu bạn ưu tiên cái tôi của nhà phát triển hơn chất lượng của cơ sở mã, bạn sẽ hy sinh chất lượng sản phẩm của mình, vì ... chính xác là gì? Bảo tồn sự non nớt của các nhà phát triển đồng nghiệp của bạn? Bảo vệ những kỳ vọng không thực tế của đồng nghiệp của bạn?
Chỉnh sửa: Tôi đã thấy một lý do hợp lệ để để lại mã đã nhận xét trong nguồn và đó là một trường hợp rất cụ thể: khi mã được viết ở dạng kỳ lạ / không trực quan và cách viết lại sạch sẽ thì không. làm việc vì một lý do thực sự tinh tế. Điều này cũng chỉ nên được áp dụng sau khi đã thực hiện nhiều lần để khắc phục sự cố và mỗi lần thử lại xuất hiện cùng một lỗi. Trong trường hợp như vậy, bạn nên thêm mã trực quan được nhận xét dưới dạng nhận xét và giải thích lý do tại sao nó không hoạt động (vì vậy các nhà phát triển trong tương lai sẽ không thử thay đổi tương tự lần nữa):
// note by <author>: the X parameter here should normally
// be a reference:
// void teleport(dinosaur& X);
// but that would require that we raise another dinosaur and
// kill it every twelve hours
// as such, the parameter is passed by value
void teleport(dinosaur X);