รายละเอียดความแตกต่างระหว่าง @see และ @inheritDoc


90

ฉันได้ดูข้อมูลอ้างอิง JavaDocแล้วและในขณะที่ฉันเข้าใจความแตกต่างพื้นฐานระหว่าง@see(ลิงก์ต่างๆ) และ{@inheritDoc}(การส่งออกความคิดเห็น JavaDoc ระดับสูง) ฉันต้องการคำชี้แจงเกี่ยวกับวิธีการใช้งานจริง

ใน Eclipse IDE เมื่อฉันเลือก "สร้างความคิดเห็นขององค์ประกอบ" สำหรับวิธีการที่สืบทอดมา (จากอินเตอร์เฟสหรือ toString () แทนที่และอื่น ๆ ) มันจะสร้างข้อคิดเห็นต่อไปนี้

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

หากฉันจำเป็นต้องสร้าง JavaDoc ฉันควรทิ้งไว้ที่นั่นแทนที่@seeด้วย{@inheritDoc}หรือเปลี่ยนเป็น JavaDoc โดยสุจริตดังนี้:

/**
 * {@inheritDoc}
 */

และเมื่อฉันทำเช่นนั้นฉันควรยังคงแฟล็ก class # method ไว้หรือไม่

คำตอบ:


145

ก่อนอื่นคุณควรลบเทมเพลต eclipse ดั้งเดิมออกเนื่องจากเป็นเพียงขยะที่มีเสียงดัง ใส่เอกสารที่มีความหมายหรือไม่ใส่อะไรเลย แต่การสร้างสิ่งใหม่ที่ชัดเจนโดยไม่มีประโยชน์โดยใช้เทมเพลต IDE เป็นเพียงการถ่วงรหัส

ประการที่สองถ้าคุณจะต้องผลิต Javadoc แล้วคุณมี/**เพื่อให้การแสดงความคิดเห็นที่มีจุดเริ่มต้น ไม่งั้นจะไม่ใช่ javadoc

สุดท้ายหากคุณกำลังลบล้างคุณควรใช้@inheritDoc(สมมติว่าคุณต้องการเพิ่มลงในเอกสารต้นฉบับดังที่ @seh ระบุไว้ในความคิดเห็นหากคุณต้องการทำสำเนาเอกสารต้นฉบับคุณก็ไม่ต้องการอะไรเลย) @seeควรใช้เพื่ออ้างอิงวิธีการอื่น ๆที่เกี่ยวข้องเท่านั้น


75
คุณควรใช้ก็ต่อ@inheritDocเมื่อคุณต้องการเพิ่มลงในเอกสารชั้นสูงดั้งเดิมเท่านั้น หากคุณเพียงต้องการให้มันซ้ำกัน Javadoc จะทำเช่นนั้นแล้วโดยสังเกตว่าเอกสาร superclass ใช้กับวิธีการแทนที่ของคลาสย่อยเนื่องจากคลาสย่อยไม่มีเอกสารเพิ่มเติม
ก.ย.

4
ฉันสร้างเอกสารโดยมีและไม่มี@inheritDocและไม่เห็นความแตกต่างใด ๆ แม้ว่าจะไม่มี@inheritDocแต่ฉันก็เห็นว่า Javadoc ของคลาสที่ได้รับนั้นถูกผนวกเข้ากับคลาสพื้นฐาน
randominstanceOfLivingThing

ฉันมาที่นี่เพราะ checkstyle บ่นว่า "วิธีการดูเหมือนไม่ได้รับการออกแบบมาสำหรับการขยาย" ควรใช้ความคิดที่ดี@inheritDocจากนั้นเพิ่มเอกสารประกอบการใช้งานบางอย่างเช่นวิธีการใช้งาน / เขียนทับเมธอดหลักและโดยเฉพาะอย่างยิ่งทำไมมันถึงทำเช่นนั้น
เบ็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.