Có tốt để giữ bình luận sửa lỗi trong mã không?


15

Nhóm của tôi đang sử dụng trường hợp rõ ràng làm điều khiển phiên bản. Dự án mà tôi đang làm việc không bắt đầu từ 7-8 năm trước. Trong toàn bộ thời gian thực hiện dự án, chúng tôi đã phát hành một số gói dịch vụ sửa lỗi, vv Các vấn đề được theo dõi bằng hệ thống theo dõi lỗi và hầu hết những người làm việc với các bản sửa lỗi đều tuân theo thói quen kèm theo nhận xét trong START / Khối END với ngày, tác giả, id-id, v.v.

Tôi cảm thấy điều này khá không liên quan và làm cho mã trở nên lộn xộn và không thoải mái để duy trì và đây là những điều phải là một phần của nhận xét / nhãn đăng ký, v.v., nơi chúng tôi có thể giữ thêm thông tin vòng đời của sản phẩm công việc.

Thực hành tốt nhất để làm theo là gì?

Một số người đánh giá mã đã nhấn mạnh vào các bình luận về lỗi và sửa lỗi để giảm bớt cuộc sống của họ. Theo hiểu biết của tôi, họ phải xem lại các tệp bằng cách ánh xạ nó tới dạng xem và lấy nhật ký thay đổi của chi nhánh và xem xét nó. Sẽ rất hữu ích nếu tôi có thể nhận được một số thực tiễn tốt nhất về việc gửi mã cập nhật để xem xét.


3
Câu hỏi thực sự là TẠI SAO họ làm như vậy. Đây có thể là một quy trình rất cũ từ trước khi kiểm soát nguồn.

@anderson - Tôi cảm thấy họ không có hiểu biết đúng đắn về việc sử dụng Clearcase khi nó được giới thiệu. Vì vậy, thực tế đó có thể đã đi xa hơn ....
sarat

xem xét tìm hiểu?


Tôi sẽ không nói đó là một thực hành xấu. Dù sao, một trong những phép đo chất lượng phần mềm là phần trăm bình luận thông qua mã nguồn.
Rudy

Câu trả lời:


27

Vấn đề với việc thêm lỗi dưới dạng nhận xét vào mã là, bạn không có được câu chuyện đầy đủ. Nếu tôi thấy một đoạn mã hoàn toàn tốt được gắn thẻ "đây là bản sửa lỗi cho lỗi blah ", phản ứng đầu tiên của tôi sẽ là nói "vậy thì sao?". Mã ở đó, nó hoạt động. Điều duy nhất tôi cần biết để duy trì mã là một bình luận cho tôi biết nó làm gì.

Một cách thực hành tốt hơn là thêm các tham chiếu sửa lỗi trong nhật ký cam kết SCM. Bằng cách đó, bạn sẽ thấy lỗi là gì, nơi nó được giới thiệu và cách khắc phục. Ngoài ra, khi đến thời điểm phát hành, bạn chỉ cần trích xuất nhật ký SCM và thêm một dấu đầu dòng cho biết có lỗi và đã được sửa. Nếu một chi nhánh hoặc phiên bản khác giới thiệu cùng một lỗi, bạn có thể dễ dàng xác định vị trí sửa lỗi và áp dụng lại nếu đó thực sự là điều tương tự.

Nói xong, tôi cũng đồng ý với câu trả lời của Charles. Nếu lý do cho một đoạn mã không rõ ràng, bằng mọi cách, hãy nói với người bảo trì rằng mã ở đó vì một lý do và nên được xử lý cẩn thận.


Câu trả lời tuyệt vời. Tôi đã thêm vài điểm vào câu hỏi của mình. Vui lòng kiểm tra và cập nhật câu trả lời của bạn. cảm ơn bạn. BTW, bạn có thể giúp tôi với các lệnh xóa để nhận nhật ký cam kết từ một chi nhánh cụ thể không?
sarat

@Sarath Tôi e rằng tôi chưa bao giờ sử dụng ClearCase trước đây. Hãy sử dụng superuser để yêu cầu đi. Tôi chắc chắn có rất nhiều người biết sẵn sàng giúp đỡ.
Dysaster

4
Các trình theo dõi lỗi tốt như JIRA có thể xem nhật ký cam kết của SCM của bạn và lấy thông tin về các lỗi. Chỉ cần nghĩ rằng bạn cam kết điều gì đó cho một lỗi và trình theo dõi lỗi sẽ tự động thêm một ghi chú vào báo cáo lỗi đã cam kết X đề cập đến lỗi.

@Andersen - Cảm ơn chúng tôi đang sử dụng JIRA. Nhưng tôi cần chắc chắn rằng nó có sử dụng đúng cách hay không.
sarat

@ Thorbjørn Ah, bạn đã có nó dễ dàng. Tôi đã phải thực hiện thủ công trở lại trong ngày với combo CVS / Bugzilla (và sau đó là SVN / Bugzilla). Thêm tham chiếu bugfix vào cam kết của tôi và thêm tham chiếu cam kết vào bugzilla. Quá trình dễ bị lỗi và các nhà phát triển có xu hướng quên cái này hoặc cái kia. Nhưng thông tin đến rất tiện dụng trong một số dịp.
Dysaster

23

Chủ yếu là thực hành xấu. Tôi sẽ không nói nó không bao giờ nên được thực hiện. Đôi khi bạn gặp phải một cái gì đó giống như lỗi trong API bên ngoài mà bạn phải xử lý. Công việc xung quanh có thể trông hoàn toàn chết não nếu bạn không biết về lỗi tiềm ẩn. Trong trường hợp đó, có thể là một ý tưởng tốt để ghi lại lỗi trong mã để đồng nghiệp hoặc bản thân bạn sau này không cố gắng "sửa" mã chết não rõ ràng.


3
Đã đồng ý. Thêm các loại ý kiến ​​khi họ thêm giá trị quan trọng. Mặc dù vậy, đừng làm chúng chỉ vì mục đích xoay chuyển.
quick_now

Thật tuyệt, điều này hỗ trợ cho ý tưởng về các bình luận cho biết "Tại sao" một số mã ở đó. Xem programmers.stackexchange.com/questions/1/...
Gabriel

Tôi đã thực hiện điều này một vài lần: mã mà thoạt nhìn, hoàn toàn bất chấp logic ("mã này ở đây là gì?") Nhưng thực sự ở đó vì một lý do rất chính đáng, vì vậy bạn muốn mọi người cẩn thận nó Sau đó, thêm một nhận xét thận trọng giải thích lý do tại sao mã đó có thể làm cho cuộc sống của mọi người dễ dàng hơn. Sau đó, nếu ai đó có thể nghĩ ra một cách tốt hơn để giải quyết vấn đề ban đầu, tất cả tín dụng cho họ, tôi nói - họ biết tại sao mã braindead được đưa ra, và những gì nó được thực hiện, vì vậy việc thực hiện một giải pháp thay thế dễ dàng hơn nhiều giải pháp.
một CVn

9

Thực hành xấu. Nhận xét sẽ hết hạn và làm lộn xộn mã. Thông tin vẫn có sẵn trong lịch sử phiên bản của hệ thống SCC của bạn nếu cần.


3

Âm thanh như một thực hành xấu. Điều gì xảy ra nếu tổ chức của bạn quyết định chuyển sang hệ thống theo dõi lỗi khác? Đừng buộc sản phẩm của bạn quá chặt với các công cụ bạn hiện đang sử dụng. Thay vì tham khảo ID lỗi cụ thể và lý do tại sao mã trông không rõ ràng, hãy thúc đẩy quyết định thiết kế của bạn bằng các nhận xét trong mã.


Đây là một sự phân đôi giả. Tại sao bạn không thể có ý kiến ​​thiết kế ("đây là lý do tại sao chúng tôi đã làm xy z") khi cần thiết và đề cập đến id lỗi trong thông báo cam kết?
Matthew Flaschen

Nó nói bạn không thể ở đâu? Tôi đã đề cập đến ID lỗi trong mã, không phải thông báo cam kết VCS.
fejd

Xin lỗi tôi hiểu lầm. Tôi nghĩ rằng bạn đang nói rằng nó không hữu ích để đặt id lỗi ở bất cứ đâu.
Matthew Flaschen

Không có vấn đề, điều đó chỉ có nghĩa là câu trả lời của tôi không đủ rõ ràng. :)
fejd

2

Phản ứng đầu tiên của tôi là không lặp lại chính mình để lấy nó ra khỏi mã và vào nhật ký SCM. Chúng tôi đã có một cuộc thảo luận tương tự ở đây về nhận xét sửa đổi cho các chức năng, tên tác giả và ngày tạo cho các tệp và chức năng. Trước đây (trước khi SCM được sử dụng), tất cả thông tin này được lưu trong các tệp để có thể tái tạo lại quá trình phát triển của tệp.

Khoảng một nửa số nhà phát triển muốn thông tin này có thể có tất cả thông tin ở một nơi (điều này kích hoạt họ tìm kiếm các thay đổi trong SCM). Nửa còn lại của các nhà phát triển không bắt đầu tìm kiếm manh mối về những gì đã thay đổi trong coe, nhưng từ SCM để họ không cần thông tin trong mã. Chúng tôi vẫn chưa đưa ra quyết định phải làm gì với những bình luận đó. Nó phụ thuộc rất nhiều vào cách mọi người làm việc và một số người rất bướng bỉnh trong việc rời bỏ các phương pháp đã biết của họ. Điều tương tự về nhận xét khối mã và để chúng trong mã mãi mãi.


Tôi đoán rằng mã nhận xét nên được kiểm tra bởi SCM và thậm chí từ chối cam kết ... Nó thêm lộn xộn vào mã chỉ để đạt được 5 phút tìm kiếm trong lịch sử SCM nếu một ngày giả định trong tương lai bạn cần nó trở lại.
Julien Roncaglia

Đồng ý nhưng cố gắng thực hiện điều đó trong nguồn an toàn: D Trong nhóm dự án của chúng tôi, chúng tôi đã làm việc với các đánh giá, vì vậy hiện tại các khối đó bị người đánh giá từ chối.
thiệu

Oh SourceSafe ... xin lỗi cho bạn và nhóm của bạn.
Julien Roncaglia

Đừng, tốt hơn là không có gì. Và tại thời điểm này, tất cả sự phát triển mới được thực hiện với Subversion, vì vậy mỗi tháng tôi ít phải làm gì với nguồn an toàn.
thiệu

1

Chỉ để thêm vào những gì Dyaster et al. đã nói, mặc dù JIRA có các khả năng thực sự tốt để hiển thị các thay đổi liên quan đến lỗi, nhưng nơi tốt nhất tuyệt đối để ghi lại lỗi là trong trường hợp thử nghiệm. Nếu mã không rõ ràng mà không có nhận xét cho biết lỗi nào đã được sửa, đó là "mùi mã". Điều đó nói rằng, nếu bạn không có thời gian để làm sạch mùi, bình luận nên tham khảo trường hợp thử nghiệm, nơi rõ ràng hơn nhiều tại sao mã đang làm những gì nó đang làm. Nếu bạn không có thời gian để viết một trường hợp thử nghiệm giải thích về sửa lỗi, thì lỗi vẫn chưa thực sự được sửa, nó đã bị hoãn lại.


1

Tôi đồng ý với việc thêm id idfix trong thông điệp cam kết, và không phải trong chính mã. Trình theo dõi lỗi tự động quét các thông báo cam kết cho id lỗi rất hữu ích.

Ngoài ra, bạn có thể sử dụng lệnh đổ lỗi / chú thích / khen ngợi của hệ thống kiểm soát phiên bản của mình để giúp thay thế các nhận xét này. Sau đó, khi bạn chạy một cái gì đó như:

vcs blame file.ext

bạn có thể thấy thông tin hữu ích, thường bao gồm cả những người đã thay đổi từng dòng, khi họ thay đổi nó và id xác nhận. Từ id xác nhận, bạn có thể nhận được thông báo đầy đủ, bao gồm id lỗi.

Các hệ thống VCS tốt sẽ cho phép bạn bỏ qua khoảng trắng khi tính toán ai đã sửa đổi một dòng.

Tôi không biết Clear Case có gì cho tính năng này.

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.