Chi tiết về sự khác biệt giữa @see và @inheritDoc


87

Tôi đã xem qua tham chiếu JavaDoc và trong khi tôi hiểu sự khác biệt cơ bản giữa @see(các liên kết khác nhau) và {@inheritDoc}(xuất nhận xét JavaDoc siêu lớp), tôi cần làm rõ cách mọi thứ thực sự được triển khai.

Trong IDE Eclipse khi tôi chọn “Tạo chú thích phần tử” cho phương thức kế thừa (từ giao diện hoặc ghi đè toString (), v.v.), nó sẽ tạo nhận xét sau

/* (non-Javadoc)
 * @see SomeClass#someMethod()
 */

Nếu tôi được yêu cầu sản xuất JavaDoc, tôi có nên để nó ở đó, thay thế @seebằng {@inheritDoc}hoặc chuyển nó thành JavaDoc hoàn hảo như sau:

/**
 * {@inheritDoc}
 */

Và khi tôi làm điều đó, tôi có nên giữ cờ phương thức lớp # không?

Câu trả lời:


142

Trước hết, bạn nên xóa mẫu nhật thực ban đầu vì nó chỉ là rác ồn ào. Đặt tài liệu có ý nghĩa vào hoặc không đặt bất kỳ thứ gì. Nhưng việc tái tạo lại những thứ hiển nhiên vô ích bằng cách sử dụng các mẫu IDE chỉ làm xáo trộn mã.

Thứ hai, nếu bạn bắt buộc phải sản xuất javadoc, thì bạn phải bắt đầu nhận xét /**. Nếu không, nó không phải là javadoc.

Cuối cùng, nếu bạn đang ghi đè thì bạn nên sử dụng @inheritDoc(giả sử bạn muốn thêm vào tài liệu gốc, như @seh đã lưu ý trong nhận xét, nếu bạn chỉ muốn sao chép tài liệu gốc thì bạn không cần bất cứ thứ gì). @seechỉ nên thực sự được sử dụng để tham khảo các phương pháp liên quan khác.


75
Bạn chỉ nên sử dụng @inheritDocnếu bạn định thêm vào tài liệu lớp cha ban đầu. Nếu bạn chỉ muốn nó được sao chép, Javadoc sẽ làm điều đó rồi, lưu ý rằng tài liệu về lớp cha áp dụng cho phương thức ghi đè của lớp con vì lớp con không cung cấp tài liệu bổ sung.
seh 11/11/12

4
Tôi đã tạo tài liệu có và không có @inheritDocvà không thấy bất kỳ sự khác biệt nào. Ngay cả khi không có @inheritDoc, tôi thấy rằng Javadoc của lớp dẫn xuất đã được thêm vào lớp cơ sở.
randominstanceOfLivingThing

Tôi đến đây vì checkstyle phàn nàn "phương pháp dường như không được thiết kế để mở rộng". Một ý tưởng tốt có thể là sử dụng @inheritDocvà sau đó thêm một số tài liệu cụ thể về triển khai, ví dụ như cách nó triển khai / ghi đè phương thức mẹ và đặc biệt là TẠI SAO nó lại làm theo cách nó làm.
Ben
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.