अक्सर ऐसा होता है कि एक विधि अपने तर्कों पर बाधा लगाती है जिसे टाइप सिस्टम द्वारा वर्णित नहीं किया जा सकता है। उदाहरण के लिए, एक विधि की आवश्यकता हो सकती है कि कुछ तर्क गैर-शून्य हो, या कुछ int-टाइप किए गए तर्क सकारात्मक हो। यहां तक कि अधिक जटिल पूर्व शर्त भी हो सकती है, उदाहरण के लिए कि एक निश्चित विधि पहले कहा जाता था, या कुछ निश्चित स्थिति में एक निश्चित वस्तु है। जावाडोक में इसे दस्तावेज करने का सबसे अच्छा तरीका क्या है?जावा विधि के दस्तावेज़ (सरल) पूर्व शर्त कैसे करें?
उदाहरण के लिए, मैं निम्नलिखित सार्वजनिक पुस्तकालय समारोह है, जहां तर्क नकारात्मक नहीं हो सकता है लगता है:
public void foo(int bar) {
if (bar < 0) {
throw new IllegalArgumentException("Negative bars cannot be food.");
}
...
}
मैं इस तरह से इस दस्तावेज़ के लिए चाहते हैं कि यह के बाकी हिस्सों से "बाहर खड़ा है" प्रलेखन पाठ ताकि दस्तावेज पाठकों को तुरंत पता चले कि उन्हें कहां देखना है। वर्तमान में, मैं जावाडोक को throws
खंड जोड़कर ऐसा करते हैं:
/**
* Foos a bar.
* @param bar the bar to be food
* @throws IllegalArgumentException if bar is negative
*/
public void foo(int bar) {
...
हालांकि, इस विधि के विनिर्देश में अपवाद की फेंकने परिचय देता है। अब, पुस्तकालय उपयोगकर्ता अपने व्यवहार में इस व्यवहार पर निर्भर हो सकते हैं। इसलिए यदि मैं इस विधि को अगले संस्करण में इस तरह से बदलना चाहता हूं कि नकारात्मक मानकों की भी अनुमति है, तो मैं ग्राहकों के कोड को तोड़ सकता हूं।
क्या जावाडॉक में इस तरह की चीजों को दस्तावेज करने के लिए कोई सर्वोत्तम प्रथा है? मैंने सोचा है:
- दस्तावेज़ीकरण पाठ में वर्णित करते हुए कि तर्क नकारात्मक है अगर विधि ने व्यवहार को अपरिभाषित किया है। हालांकि, यह वास्तव में बाहर खड़ा नहीं है, इसलिए यह कई लाइब्रेरी उपयोगकर्ताओं द्वारा याद किया जा सकता है।
- एनोटेशन का उपयोग (
public void foo(@NonNegative int bar)
)। हालांकि, इसके लिए एनोटेशन का एक मानक सेट आदर्श होगा, और यह मानक सेट मौजूद नहीं है।
जनता में बोलते समय एक नियम यह है कि "उन्हें तीन बार बताएं।" मुझे खुद को दोहराने में कोई समस्या नहीं दिख रही है, और मैं इसे जावा डॉक्स में स्वयं करता हूं। बस टेक्स्ट में "बार बराबर या शून्य से अधिक होना चाहिए" कहें। मुझे नहीं पता कि यह सबसे अच्छा अभ्यास है, लेकिन मैं दस्तावेज़ को पढ़ने की कोशिश कर रहा हूं। – markspace
जैसा कि आपको लगता है कि आप जवाडोक में जितनी अधिक जानकारी डाल सकते हैं। "कोड क्या करता है" को दस्तावेज करने के बजाय आपको "कोड की आवश्यकता क्यों है" और "इसका उपयोग कैसे किया जाना चाहिए" को समझाने की कोशिश करनी चाहिए। मैं आम तौर पर एक परिस्थिति (पूर्व शर्त) के तहत एक संक्षिप्त व्याख्या सहित एक पूर्व स्पष्टीकरण सहित पूर्व शर्त दस्तावेज करता हूं। साथ ही महत्वपूर्ण, दस्तावेज अगर विधि शून्य हो जाती है और किस स्थितियों (पोस्ट-स्थितियों) के तहत। – hfontanez
मुझे लगता है कि जितना संभव हो उतना गैर-स्थैतिक रूप से चेक किए गए अनुबंधों के लिए हमेशा अच्छा होता है, उदाहरण के लिए, जावा 8 या गुवा के 'वैकल्पिक' प्रकार का उपयोग करने के बजाय 'शून्य' को वापस करने या स्वीकार करने के बजाय। यदि आपके पास अधिक जटिल अनुबंध हैं, और उन्हें पूर्व-और पोस्टकंडिशन के रूप में निर्दिष्ट करना चाहते हैं, तो आप जावडोक का समर्थन करने वाली उपयुक्त लाइब्रेरी खोजना चाहेंगे। मुझे केवल जेएएसएस नामक एक परियोजना के बारे में पता है: http://csd.informatik.uni-oldenburg.de/~jass/ लेकिन मुझे यकीन नहीं है कि यह कितना अद्यतित है। –