2008-10-02 42 views
9

Tại sao bạn sẽ thêmsố Bug bình luận

// Bug 1024

ý kiến ​​vào một kiểm soát nguồn cơ sở mã? Hầu hết các hệ thống theo dõi lỗi và kiểm soát nguồn được trang bị tốt hơn để theo dõi thông tin này. Trong điều khiển nguồn, nhãn hoặc nhận xét có thể được sử dụng với thông tin đăng ký. Trong trình theo dõi lỗi, số sửa đổi có thể được thêm vào độ phân giải của lỗi. Vậy tại sao lại bình luận mã? Đặc biệt vì những nhận xét liên quan này rất ngắn ngủi và chúng có khuynh hướng xây dựng cơ sở mã.

+0

Có một câu hỏi tương tự được hỏi trước đó: http://stackoverflow.com/questions/123936/do-you-use-special-comments-on-bug-fixes-in-your-code – DGentry

+0

Tôi đang tìm kiếm hợp lý đằng sau hành vi này, mà câu hỏi trước đó dường như không giải quyết được. Đó là loại quá rộng. –

+0

Khi tất cả các lỗi từ các bản vá lỗi trước đó được sáp nhập vào cây chính, chúng tôi sẽ mất thông tin "ai đã làm gì". Tôi nghĩ rằng đó là một thiếu sót của TFS cho chắc chắn. Quá nhiều lỗi sửa chữa bình luận bị tổn thương trong dài hạn - mọi người sau đó sợ chạm vào công cụ. –

Trả lời

8

Tôi đã tìm thấy một trong những thứ hữu ích này vào ngày khác trong cơ sở mã của chúng tôi.

Tôi đã nói "tại sao anh ấy lại gọi chức năng khởi tạo lần thứ hai, điều này muộn trong luồng công việc?"

Nhận xét lỗi cho phép tôi đi đúng mô tả sự cố. Khi tôi làm lại mã, tôi chắc chắn sẽ bao gồm lỗi đó trong các thử nghiệm của tôi và không giới thiệu lại nó.

Mặc dù tôi sẽ nói rằng nói chung tôi đồng ý với bạn và không tự chèn chúng.

Tôi đã ưu tiên rằng nhà phát triển được đề cập đã khắc phục lỗi theo cách có ý nghĩa hơn, để tôi không phải băn khoăn về mã ở nơi đầu tiên.

+0

Đây là một trong những trường hợp thực sự mà tôi làm một điều như vậy. Nếu có một lỗi đặc biệt khó chịu thay đổi những gì bạn làm trong một thời trang không rõ ràng, điều này là tốt. Nếu không, tránh. –

3

lười biếng tinh khiết. Chắc chắn, phải mất nhiều thời gian hơn trong thời gian dài, nhưng trong thời gian ngắn "// Bug 1024" không cần nỗ lực gì cả. Bạn càng có nhiều mã thì điều này càng tệ.

4

Cuối cùng, tôi nghĩ đó là một thực tế không tốt. Tốt hơn nên đưa ra lý do tại sao lỗi tồn tại (foos của kiểu Y không có thuộc tính Z). Bạn có thể bao gồm "nhiều hơn trong BugId 12345" cùng với điều đó nếu bạn muốn.

Nếu bạn đang tích hợp trên nhiều cấp độ, chế độ xem mã nguồn trong trac có thể liên kết trực tiếp với BugId.

1

Tôi đã thực hiện việc này cho đến khi Visual Studio 2008 được gửi kèm chú thích. Nó rất hữu ích khi nhìn lại mã cũ để ngay lập tức thấy rằng có ít nhất là suy nghĩ đằng sau một quyết định mã cụ thể.

Có, tôi biết bạn có thể làm so sánh với các phiên bản trước, nhưng đó là một nỗi đau trong mông khi bạn chỉ cần nhanh chóng cảm thấy tốt về cập nhật mã nhỏ.

3

Hãy tưởng tượng bạn có một lỗi mới mà bạn theo dõi để thay đổi trong bản sửa đổi 12345. Bạn nhìn vào nhật ký và ngay lập tức cho bạn biết rằng Bug 1024 là lý do thay đổi được thực hiện.

Sau đó, bạn có thể truy cập và xem 1024 để xem điều gì, tại sao và khi nào trước khi thực hiện bản sửa lỗi mới - 'quy tắc tất cả chúng'.

Nếu số lỗi không có trong thông báo cam kết, bạn phải tìm kiếm lỗi mà một cam kết đã được sửa - và đó có thể là một số lỗi (nếu lỗi được báo cáo nhiều lần).

2

Tôi đồng ý với bạn rằng nhận xét như thế này không thực sự hữu ích và quá ngắn gọn. Tuy nhiên, tuy nhiên, nó rất hữu ích và quan trọng để nhận xét mã với các tham chiếu đến các bản ghi trong hệ thống theo dõi lỗi (hoặc mở rộng tới bất kỳ kho lưu trữ KM nào mà bạn có thể có).

Đôi khi một mã được thay đổi để thực hiện giải pháp cho một vấn đề nhất định với hành vi ứng dụng. Đôi khi cách giải quyết được giới thiệu là không có cách nào hợp lý. Nó thường xảy ra khi một mã được cập nhật bởi người khác, đoạn mã 'xấu' này bị loại bỏ như là một phần của nỗ lực tái bao thanh toán.

Vì vậy, đánh dấu mã là thuộc về một sửa lỗi cụ thể làm cho mã hiển thị trong quá trình tái bao thanh toán, nhắc nhà phát triển xem lại mô tả lỗi trước khi thay đổi mã. Nó cũng giúp trong trường hợp lỗi được mở lại - nếu bạn phải thay đổi cùng một phần của mã nhiều lần bạn có thể xem xét đầu tư thời gian vào một giải pháp thay thế.

P.S. bạn có thể xem xét this bài viết về MS Office từ Joel On Software hữu ích. Theo như tôi biết mã của MS Office và MS Windows là đầy đủ các ý kiến ​​tương tự mà giải thích các quyết định được thực hiện bởi các nhà phát triển từ lâu.

2

Tôi thấy nó hữu ích khi giải thích mã mà nếu không sẽ có vẻ sai, và cũng để sử dụng trong thư cam kết.

1

Nếu bạn đang duyệt qua mã nguồn không quen thuộc và bạn thấy điều gì đó không rõ ràng, thật tuyệt khi biết lý do. Đó là một cuộc gọi phán xét mặc dù, không phải mọi sửa lỗi đều cần giải thích như vậy - có lẽ hầu hết mọi người đều có thể thoát ra mà không có nó.

3

Tôi nghĩ đây là trường hợp "Tôi có một cái búa, đó chắc hẳn là một cái đinh". Trình soạn thảo văn bản hoặc IDE của bạn không phải là công cụ duy nhất để quản lý mã.

Lịch sử được duy trì tốt nhất bên ngoài mã. Ý nghĩa của mã nên được mô tả trong các bình luận khi không rõ ràng ngay lập tức.

Tôi đồng ý rằng số lỗi phải nằm trong thư cam kết kiểm soát nguồn.

2

Tôi không làm điều đó. Tôi không thể nghĩ ra một lý do chính đáng tại sao bạn sẽ đặt ID lỗi trong mã. Thay vào đó, tôi sẽ đặt nó vào ghi chú phát hành/thay đổi.

Những gì tôi thấy hữu ích là sử dụng các khiếm khuyết Id như một phần của tên trên các bài kiểm tra tự động:

[TestFixture] 
public class Release_1_2_Bugfixes 
{ 
    [Test] 
    public void TestBug42() 
    { 
    Assert.AreEqual(42, CalculateAnswerToLifeUniverseAndEverything()); 
    } 
} 

Tôi đã nhìn thấy other projects làm điều tương tự.

1

Nếu có đủ lý do để tin rằng ai đó muốn biết số lỗi khi xem một phần mã, thêm nhận xét đề cập đến lỗi có thể khá tốt (hy vọng nó sẽ diễn giải các bit quan trọng của lỗi đó) , Tuy nhiên). Có, thông báo cam kết kiểm soát nguồn cũng phải chứa số lỗi và tìm kiếm thông qua nhật ký sửa đổi có thể cung cấp cho bạn thông tin tương tự ... nhưng nếu cùng một phần của mã được thay đổi nhiều lần, nhưng chi tiết đã học được từ lỗi ban đầu vẫn được áp dụng, có thể mất một lúc để tìm thay đổi ban đầu để tìm hiểu về lỗi đó.

Ngoài ra, các tình huống phát sinh khi có lý do chính đáng để chuyển mã từ lớp này sang lớp khác hoặc đổi tên tệp, điều này sẽ khiến việc tìm ra gốc rễ của lý do đằng sau một phần mã nhất định thậm chí còn khó hơn. rất nhiều vấn đề với SVN, nhưng đau với CVS).

3

Bạn không bao giờ nên thêm số lỗi. Bạn nên thêm số lỗi và chủ đề và bất kỳ vòng loại nào nếu bạn đã thực hiện nhiều lần đăng ký cho một lỗi duy nhất:

Lỗi 1111 - Foo vỡ trên hệ thống 64 bit.Sửa # 2 vì nó đã được mở lại sau khi hợp nhất vào thân cây.

Một số hệ thống có tích hợp số lỗi. Trong mxr.mozilla.org, số lỗi trong màn hình đăng nhập cvs được tự động biến thành một liên kết đến số bugzilla.mozilla.org. Khi bạn đang đào trong mã, đây là một lần tiết kiệm rất lớn. Tôi nghĩ rằng Fogbugz có một tính năng tương tự ...

Ngoài ra, ngay cả khi hệ thống của bạn không, nó thường giúp bởi vì không ai muốn xem toàn bộ bối cảnh thay đổi trong nhận xét, đó là những gì trình theo dõi lỗi.

1

Bạn nhấn vào đầu móng với "mức độ liên quan là rất ngắn ngủi và chúng có xu hướng xây dựng cơ sở mã."

Từng bit cruft vô dụng tích tụ trong tệp nguồn khiến chúng khó đọc và khó bảo trì hơn. Xóa mọi thứ không thêm giá trị. "Bug 12345" có ít giá trị bây giờ và sẽ không có giá trị nào trong vài tuần tới.

1

Chúng tôi làm việc trên một hệ thống quy mô lớn với nhiều nhà phát triển và nhiều chi nhánh được phát hành.

Những nhận xét tham chiếu lỗi này thực sự hữu ích khi chuyển từ nhánh này sang nhánh khác, đặc biệt vì hệ thống SCM mà chúng tôi sử dụng rất kém tính năng và không thể nhận được nhận xét.

Nếu khắc phục đơn giản thì có thể không cần điểm đánh dấu lỗi. Nếu nó không rõ ràng, nó có thể có ý nghĩa hơn để tham khảo một Bug sau đó để viết một lời giải thích dài trong một phần bình luận.

0

Tôi không thích loại graffiti này. Giống như các dạng sống khác đáng lo ngại mà chúng tiết ra theo thời gian, làm tắc nghẽn cơ sở mã.

Sự cố thực sự bắt đầu khi mọi người sửa lỗi trùng lặp với bản sửa lỗi trước đó. Sau đó, bạn có số lỗi ghi nhãn một phần mã đơn giản là sai hoặc gây hiểu nhầm.

2

Tôi ngạc nhiên về số lượng người phản đối điều này. Cảm giác cá nhân của tôi về điều này là đây là một ý tưởng tốt tốt. Tôi đồng ý với một nhận xét trước đó rằng nó nên bao gồm nhiều hơn chỉ là số lỗi, và tốt nhất là bao gồm một bản tóm tắt ngắn và liên kết đến hệ thống theo dõi lỗi nếu thích hợp.

Lợi ích của những nhận xét này chỉ hiển nhiên trong một dự án cũ hơn có lịch sử và một số lượng lớn các bản sửa lỗi trước đó. Bạn không cần phải đưa ra những nhận xét này ở khắp mọi nơi, nhưng chúng rất hữu ích khi được đặt trước một khối mã có thể không có ý nghĩa nếu không có ngữ cảnh. Trong bất kỳ loại hệ thống phức tạp hợp lý nào, sẽ có các đoạn mã có vẻ vô lý hoặc không cần thiết mà không có ngữ cảnh.

Do tương tác với hệ thống hoặc cách giải quyết cũ, mã cần thiết. Để ngăn chặn một người nào đó sau đó giới thiệu lại một lỗi được vá, nó rất hữu ích để biểu thị lỗi mà khối mã được thiết kế để sửa chữa, tốt nhất là với một số loại giải thích kèm theo. Nếu không, bạn phụ thuộc vào ai đó kiểm tra lịch sử cam kết một cách cẩn thận vì một lý do được ghi trong nhật ký cam kết, điều này rất khó xảy ra, đặc biệt nếu ai đó đang tái cấu trúc mã.

EDIT: Tôi đang đề cập cụ thể để đặt các mã này bằng một khối mã bất thường hoặc cần ngữ cảnh bổ sung.Sẽ không hữu ích hoặc cần thiết để bình luận mọi sửa lỗi chính tả bạn thực hiện :-)

0

Loại nhận xét này IS rất hữu ích: điều gì sẽ xảy ra khi bạn thay đổi công cụ theo dõi lỗi hoặc kiểm soát nguồn? Một tham chiếu đến BZ1722 vs FB3101 sẽ cho bạn biết công cụ theo dõi nào cần kiểm tra (ví dụ Bugzilla hoặc FogBugz).

0

Đó là một điều tốt!

Người đang xem mã không có khả năng đánh giá cao toàn bộ lịch sử của mã và có khả năng hoàn tác một thay đổi rất quan trọng vì chúng có thể không hoạt động trong lĩnh vực mã này trước đây. Nó có thể giải thích mã mà nếu không có vẻ điên rồ hoặc yêu cầu của khách hàng tương đương kỳ quái.

Bạn không thể luôn ghi lại các chi tiết cụ thể về yêu cầu của khách hàng thông qua kiến ​​trúc và mã, đặc biệt khi họ yêu cầu điều gì đó ngu ngốc. Do đó bạn bắt đầu với các hợp lý và sau đó tinh chỉnh hoặc hack mã vào ngu ngốc khi bạn bị buộc phải làm như vậy, các con số lỗi sao lưu mục đích của mã điên.

Các vấn đề liên quan