วิธีจัดทำเอกสาร API แบบทดสอบหรือที่ไม่สมบูรณ์เช่น @deprecated


12

มีคำที่ดีที่คล้ายกัน แต่แตกต่างจาก "คัดค้าน" เพื่อหมายความว่าวิธีการหรือ API อยู่ในรหัสฐาน แต่ไม่ควรใช้เนื่องจากการใช้งานไม่สมบูรณ์หรือมีแนวโน้มที่จะเปลี่ยนแปลง? (ใช่ฉันรู้วิธีการเหล่านั้นไม่ควรเปิดเผยต่อสาธารณชน yada yada yada ฉันไม่ได้สร้างสถานการณ์ของฉันฉันแค่พยายามทำให้ดีที่สุดเท่าที่จะทำได้)

ผู้คนแนะนำอะไร ทดลองไม่สมบูรณ์มีอะไรอีกหรือ

หากฉันกำลังสร้างเอกสาร javadoc สำหรับ API นี้ที่ยังอยู่ในฟลักซ์ฉันควรใช้แท็ก @deprecated หรือมีข้อตกลงที่ดีกว่า สำหรับฉัน @deprecated แสดงว่า API นี้เก่าและมีกลไกที่ต้องการที่ใหม่กว่าพร้อมใช้งาน ในสถานการณ์ของฉันไม่มีทางเลือก แต่วิธีการบางอย่างใน API ยังไม่เสร็จสิ้นและไม่ควรใช้ ณ จุดนี้ฉันไม่สามารถทำให้พวกเขาเป็นส่วนตัว แต่ฉันต้องการที่จะใส่คำเตือนที่ชัดเจนในเอกสาร


แท็ก "ไม่เสถียร" จะเป็นประโยชน์เช่นกัน ความหมายจะเป็นสิ่งที่แตกต่าง "สิ่งนี้ควรจะทำงานได้ดี แต่เราอาจทำการเปลี่ยนแปลงในอนาคต"
Borjab

คำตอบ:


8

คำที่เหมาะสมน่าจะเป็นศูนย์บ่มเพาะซึ่งเป็นคำที่ Google และ Apache ใช้:

ถ้าคุณใช้เวลามองใกล้ที่โครงการที่อ้างถึงข้างต้นคุณอาจสังเกตเห็นว่า APIs "ทดลอง" (เช่นใน GWT) มีแนวโน้มที่จะได้ "ทุ่มเท" com.google.gwt.gen2ชื่อแพคเกจเช่น นี่คือเพื่อหลีกเลี่ยงการสร้างมลภาวะ API "สรุป" ในอนาคตที่มีไว้สำหรับการบริโภคสาธารณะถาวร - เพราะคุณรู้

"Public APIs เช่นเดียวกับเพชรนั้นคงอยู่ตลอดไปคุณมีโอกาสที่จะทำให้ถูกต้องดังนั้นจงทำให้ดีที่สุด ... " (Joshua Bloch, วิธีการออกแบบ API ที่ดีและทำไมจึงเป็นเรื่องสำคัญ )


2
ฉันเอนตัวไปที่ "ทดลอง" หลังจากเห็น API เช่นdeveloper.chrome.com/extensions/experimental.html
Michael Levy

10

ฉันจะใช้@deprecatedด้วยเหตุผลเชิงปฏิบัติอย่างหมดจด

แม้ว่า@deprecatedจะไม่ได้ถ่ายทอดความหมายที่แน่นอนที่คุณต้องการ แต่ก็มีข้อได้เปรียบที่สำคัญ: Java คอมไพเลอร์มีการสนับสนุนในตัว การคอมไพล์ด้วย-deprecationแฟล็กช่วยให้คุณค้นหาสถานที่ทั้งหมดที่คุณแทนที่เมธอดที่เลิกใช้แล้วช่วยให้ผู้ใช้ของคุณพบรหัสที่น่าสงสัยอย่างรวดเร็ว คุณสามารถใช้@deprecatedแท็ก Javadoc เพื่ออธิบายสิ่งที่เกิดขึ้นกับทุกคนที่ใส่ใจในการอ่านเอกสารของคุณ นี่คือที่ที่คุณสามารถบอกผู้ใช้ว่า API นั้นเป็นรุ่นทดลองควรใช้ภายใต้ความเสี่ยงของตนเองและอื่น ๆ


1
+1 จุดที่ดีเยี่ยม การมีการสนับสนุนในตัวเป็นสิ่งจำเป็นสำหรับส่วนต่าง ๆ ของ API และสนับสนุนให้ผู้ใช้ดูเอกสารประกอบเพื่อทำความเข้าใจว่าทำไมส่วนเหล่านั้นจึงถูกทำเครื่องหมายว่าถูกคิดค่าเสื่อมราคา
Arseni Mourzenko

2
ฉันเอนตัวไปสู่บางสิ่งเช่น "* @deprecated นี่เป็น API ทดลองและมีแนวโน้มที่จะเปลี่ยนแปลง" อย่างน้อยที่สุดเพื่อให้ได้ IDE และเอกสารเพื่อเน้นวิธีแล้วจึงมีคำอธิบายสั้น ๆ
Michael Levy

เพียงแค่ผู้จำที่เลิกใช้แล้วจะสร้างคำเตือนมากมาย สิ่งนี้อาจไม่เลวเท่าที่ควร การได้รับคำเตือนเกี่ยวกับคุณลักษณะทดลองอาจไม่เป็นผล
Borjab

3

ฉันไม่เคยเห็นอะไรแบบนี้ใน API อื่นเนื่องจากคุณสมบัติเชิงทดลองหรือที่ไม่สมบูรณ์ไม่มีอะไรที่จะทำใน API สาธารณะ

เนื่องจากคุณไม่มีตัวเลือกให้แจ้งเตือนชัดเจนว่าส่วนหนึ่งของ API อาจมีการเปลี่ยนแปลง


ดี. ตัวอย่างเช่นเรามี: junit.org/apidocs/org/junit/experimental/package-summary.html โดยวิธีการใช้แพคเกจเป็นความคิดที่น่ากลัว เมื่อ API ไม่เสถียรคุณจะต้องเปลี่ยนแพคเกจดังนั้นคุณจะทำลายการอ้างอิงทั้งหมด การเพิ่มความคิดเห็นของจาวาจะดีกว่ามาก
Borjab
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.