2009-10-06 34 views
11

Trong công ty của chúng tôi, chúng tôi viết các bình luận Xml quá mức. Một phương pháp điển hình là đã được ghi nhận như sau:C# XML Nhận xét: Có bao nhiêu tài liệu tham khảo trong các nhận xét XML hữu ích?

/// <summary> 
/// Determines whether this <see cref="IScheduler"/> contains a specific <see cref="ISchedule"/>. 
/// </summary> 
/// <param name="schedule">The <see cref="ISchedule"/> to locate in this <see cref="IScheduler"/>.</param> 
/// <returns> 
/// Returns <see langword="true"/> if <paramref name="schedule"/> is found in this <see cref="IScheduler"/>; otherwise, <see langword="false"/>. 
/// </returns> 
bool Contains(ISchedule schedule); 

/// <summary> 
/// Removes and <see cref="IDisposable.Dispose"/>s the first occurrence of a specific <see cref="ISchedule"/> 
/// from this <see cref="IScheduler"/>. 
/// </summary> 
/// <param name="schedule">The <see cref="ISchedule"/> to remove from this <see cref="IScheduler"/>.</param> 
/// <exception cref="System.ArgumentNullException">Is thrown when the parameter schedule is null.</exception> 
/// <exception cref="System.ArgumentException">Is thrown when the <see cref="ISchedule"/> is not found in this <see cref="IScheduler"/> or was of the wrong type.</exception> 
void Remove(ISchedule schedule); 

Như bạn có thể thấy hầu hết các danh từ có thể được tham chiếu sử dụng một thẻ <see cref>.
Tôi thấy điều này quá nhiều. Hầu hết các tệp mã của chúng tôi đều bị thổi phồng với các nhận xét như vậy. Làm cho phần nhận xét gần như không đọc được.

Bạn nghĩ sao? Bạn có thích loại tài liệu này trong mã hay không?

Như thường lệ, tôi nghĩ rằng không có câu trả lời đen/trắng cho một loại câu hỏi như vậy, đó là lý do tại sao tôi làm cho nó wiki.

CHỈNH SỬA:
Câu hỏi của tôi không phải là nếu chính thẻ tự xem hữu ích theo mặc định. Rõ ràng là các liên kết được tạo ra trong tệp .chm (hoặc bất kỳ loại tài liệu được tạo nào khác) rất hữu ích. Câu hỏi của tôi là nếu nó thực sự hữu ích để gắn thẻ mọi sự xuất hiện của mọi danh từ "có thể liên kết" trong các nhận xét.
Chúng tôi sử dụng Sandcastle để tạo tài liệu mỗi tối. Thật không may nó là rất hiếm được sử dụng bởi các nhà phát triển khác, nhưng đó là một vấn đề khác.

Trả lời

6

Điểm của tất cả những điều đó là khi một cái gì đó như Sandcastle được sử dụng để tạo tài liệu HTML hoặc CHM cho thư viện, những tài liệu đó có được điều hướng siêu liên kết giữa các đối tượng. Vì vậy, câu hỏi sau đó là, khi bạn sử dụng MSDN bạn thấy nó hữu ích để có thể bấm vào một tên lớp có nó điều hướng đến sự giúp đỡ cho lớp đó, hoặc là bạn ok với sao chép nó và dán nó vào trường tìm kiếm?

Có, nó bloats mã (mặc dù bình luận có thể được thu gọn), nhưng nếu bạn thực sự gửi tài liệu cho người khác, nó khá darned hữu ích.

+2

Nó cũng rất hữu ích khi sử dụng tính năng "Tài liệu nhanh" của ReSharper (Ctrl-Q trong ánh xạ chính của tôi). – adrianbanks

1

Có một lý do cụ thể cho các loại nhận xét này: chúng có thể được sử dụng để tạo tài liệu hoặc thêm thông tin bổ sung để tự động hoàn thành. Tôi đồng ý rằng chúng quá chi tiết và khó đọc trong hầu hết các tình huống, nhưng chúng rất tốt để thêm vào một giao diện mà bạn sẽ để lộ ra bên ngoài.

Tôi khuyên bạn nên sử dụng trình chỉnh sửa cho phép bạn bật và tắt nhận xét.

Một số ngôn ngữ cho phép bạn lưu trữ nhận xét dưới dạng siêu dữ liệu trên các biến và chức năng, thay thế tốt đẹp.

11

Cá nhân, tôi nghĩ rằng những gì bạn có là một chút quá tải.

Mục đích của tham chiếu "xem" là cung cấp liên kết tốt giữa các chủ đề trong tài liệu trợ giúp được tạo sau khi phân tích cú pháp.

Trong trường hợp của bạn, thư viện kinh doanh cụ thể của bạn đang tham khảo mục ngôn ngữ, ví dụ:

<see langword="true"/> 

Cá nhân tôi cảm thấy rằng các siêu liên kết đến các đối tượng khác có liên quan trong thư viện của bạn là một tính năng rất hữu ích. Nó giúp đọc được sự trợ giúp nhiều hơn cho người dùng của bạn.

Siêu liên kết đến các yếu tố ngôn ngữ là thứ mà tôi cảm thấy chỉ nên tồn tại bên trong ngôn ngữ. Trong trường hợp của một thư viện của bên thứ ba, điều này chỉ "muddles" lên tin nhắn bằng cách đặt liên kết ở khắp mọi nơi. Điều này làm cho các liên kết tốt kém hiệu quả, vì chúng bị ẩn trong mớ hỗn độn.

Tôi khuyên bạn nên sử dụng tự do liên kết đến các lớp liên quan trong thư viện của bạn. Tôi sẽ tránh thêm các siêu liên kết vào các lớp thư viện cơ sở, ngoại trừ trong các trường hợp cụ thể, nơi nó đặc biệt hữu ích cho một số lý do (hiếm). Liên kết đến "true" và "IDisposable.Dispose", v.v., không thực sự thêm nhiều giá trị.

Hãy tin tưởng người dùng của bạn hiểu khung cơ sở, nhưng dạy họ về thư viện của bạn.

+0

Âm thanh thú vị. Làm cho tinh thần để nói rằng người tiêu dùng của thư viện của tôi nên ít nhất là bây giờ các mã thông báo ngôn ngữ xây dựng trong. Điểm tốt. – TomTom

+0

Vâng - khi tôi thấy các tài liệu liên kết với BCL ở khắp mọi nơi, nó được xem như là "rao giảng" với tôi. Làm điều đó chỉ giả định rằng người dùng của bạn không hiểu họ đang làm gì. –

+2

Có, đó là lý do tại sao nên sử dụng ' null' để phân biệt nó là từ khóa thuộc về cú pháp của ngôn ngữ mã hóa thay vì sử dụng '" xem tham chiếu ''. –

3

Như ctacke đã nói, nó rất hữu ích cho siêu liên kết. Tuy nhiên, nếu bạn không thực sự vận chuyển tài liệu, tất cả việc gắn thẻ đó làm cho tài liệu hầu như không thể đọc được. Trong trường hợp đó, tài liệu dành cho nhà phát triển (edit: INTERNAL), và nếu người đó không thể đọc được, bạn đang lãng phí thời gian của mình.

Theo quy tắc, tôi có xu hướng tham chiếu đầu tiên cho một loại hoặc thành viên và để phần còn lại được hủy liên kết. Nó để lại các bình luận khá sạch sẽ, và vẫn cung cấp liên kết có ý nghĩa.

4

Khi bạn đang làm việc với Visual Studio, bạn có thể sử dụng plugin CR_Documentor (miễn phí, bạn có thể lấy nó here) để đọc/ghi nhận xét của WYSiWYG. Nó trông giống như hình thức trợ giúp được tạo ra Sandcastle hoặc NDoc, nhưng được hiển thị khi đang bay. Thực sự hữu ích và bạn không phải quan tâm đến các nhận xét xml thô.

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