जावा में दस्तावेज़ीकरण: ऐसा कोड कैसे लिखें जो खुद बोले

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा में दस्तावेज़ीकरण: ऐसा कोड लिखें जो सहकर्मियों को दिखाने में शर्म न आए

\n\n

कल्पना करें: आप छह महीने बाद किसी और का जावा प्रोजेक्ट खोलते हैं। क्लासेस का नाम DataProcessor, Manager और Helper है। मेथड्स बिना स्पष्टीकरण के String और int स्वीकार करते हैं। और टिप्पणियाँ? वे हैं ही नहीं। परिचित लगता है? उस पल आप दस्तावेज़ीकरण की एक ही पंक्ति लिखना चाहते हैं: // TODO: समझें कि यहाँ क्या हो रहा है।

\n\n

जावा में दस्तावेज़ीकरण कोई उबाऊ जिम्मेदारी नहीं है, बल्कि एक डेवलपर की सुपरपावर है। अच्छी तरह से दस्तावेज़ीकृत कोड डीबगिंग के घंटे बचाता है, नए लोगों के ऑनबोर्डिंग को तेज करता है और आपको सहकर्मियों की नज़र में हीरो बनाता है। इस लेख में हम जावा प्रोजेक्ट्स के दस्तावेज़ीकरण के सर्वोत्तम अभ्यासों पर चर्चा करेंगे: Javadoc के जादू से लेकर ऐसे आर्किटेक्चरल निर्णयों तक जो बिना शब्दों के समझ में आते हैं।

\n\n

जावा कोड का दस्तावेज़ीकरण क्यों करें?

\n\n

ईमानदारी से कहें तो: 90% डेवलपर दस्तावेज़ीकरण लिखने से नफरत करते हैं। लेकिन 100% इसे पसंद करते हैं जब वह मौजूद हो। अच्छा दस्तावेज़ीकरण IKEA के निर्देशों की तरह है: इसके बिना आप अलमारी टेढ़ी बनाएंगे, और इसके साथ 15 मिनट में। यहाँ तीन कारण हैं कि बिना दस्तावेज़ीकरण के जावा प्रोजेक्ट एक दर्द क्यों हैं:

\n\n
    \n
  • समय पैसा है। शोध बताते हैं कि डेवलपर कोड पढ़ने में 50% तक समय बिताते हैं। दस्तावेज़ीकरण इस समय को आधा कर देता है।
  • \n
  • बग्स की संख्या कम करना। जब आप Javadoc लिखते हैं, तो आपको सीमांत मामलों के बारे में सोचने के लिए मजबूर होना पड़ता है। अक्सर दस्तावेज़ीकरण की प्रक्रिया में ही छिपी हुई त्रुटियाँ मिल जाती हैं।
  • \n
  • स्व-दस्तावेज़ीकृत कोड ≠ टिप्पणियों का अभाव। सबसे साफ कोड भी यह नहीं बताएगा कि आपने क्यों यह विशेष आर्किटेक्चर चुना या यह किस व्यावसायिक तर्क को लागू करता है।
  • \n
\n\n

Javadoc: आपका मुख्य उपकरण

\n\n

जावा उन कुछ भाषाओं में से एक है जहाँ दस्तावेज़ीकरण सीधे पारिस्थितिकी तंत्र में बनाया गया है। Javadoc API के दस्तावेज़ीकरण के लिए डी-फैक्टो मानक है। यह विशेष टिप्पणियों से HTML पेज उत्पन्न करता है। आइए जानें कि इसका सही उपयोग कैसे करें।

\n\n

नियम #1: सार्वजनिक API का दस्तावेज़ीकरण करें

\n

Javadoc public और protected मेथड्स, क्लासेस और इंटरफेसेस के लिए आवश्यक है। प्राइवेट मेथड्स को आंतरिक रूप से दस्तावेज़ीकृत किया जा सकता है यदि तर्क जटिल है, लेकिन यह अनिवार्य नहीं है।

\n\n

नियम #2: "क्या" और "क्यों" का वर्णन करें, "कैसे" का नहीं

\n

खराब उदाहरण:

\n
/**\n * एक स्ट्रिंग प्राप्त करता है और उसकी लंबाई लौटाता है।\n * @param input जाँच के लिए स्ट्रिंग\n * @return स्ट्रिंग की लंबाई\n */\npublic int getLength(String input) {\n    return input.length();\n}\n
\n

यह बेकार है। कोड पहले से ही स्पष्ट है। अच्छा उदाहरण:

\n
/**\n * यूनिकोड वर्णों में स्ट्रिंग की लंबाई की गणना करता है।\n * महत्वपूर्ण: मेथड सरोगेट जोड़ियों को ध्यान में रखता है, इसलिए\n * परिणाम इमोजी के लिए input.length() से भिन्न हो सकता है।\n *\n * @param input विश्लेषण के लिए स्ट्रिंग (null नहीं)\n * @return यूनिकोड वर्णों की संख्या\n * @throws IllegalArgumentException यदि input == null\n */\npublic int getUnicodeLength(String input) {\n    if (input == null) {\n        throw new IllegalArgumentException("Input must not be null");\n    }\n    return input.codePointCount(0, input.length());\n}\n
\n\n

नियम #3: टैग का सही उपयोग करें

\n
    \n
  • @param — पैरामीटर का विवरण। प्रकार और सीमाएँ बताएं (जैसे, "null नहीं", "धनात्मक संख्या")।
  • \n
  • @return — मेथड क्या लौटाता है। यदि null लौटाता है, तो इसे स्पष्ट रूप से लिखें।
  • \n
  • @throws — कौन से अपवाद और किन परिस्थितियों में।
  • \n
  • @see — संबंधित क्लासेस या मेथड्स का लिंक।
  • \n
  • @since — वह संस्करण जिससे मेथड उपलब्ध हुआ।
  • \n
\n\n

नियम #4: क्लासेस और इंटरफेसेस का दस्तावेज़ीकरण करें

\n

क्लास के लिए Javadoc को इस प्रश्न का उत्तर देना चाहिए: "यह क्लास क्यों मौजूद है?"

\n
/**\n * तिथियों के साथ काम करने के लिए उपयोगिता वर्ग।\n * समय क्षेत्रों को ध्यान में रखते हुए फ़ॉर्मेटिंग और पार्सिंग\n * के तरीके प्रदान करता है।\n *\n * @since 1.0\n */

ब्लॉग

पुस्तक अनुशंसाएँ