स्व-दस्तावेजीकरण कोड बनाम जावदोक?


18

हाल ही में मैं कोड आधार के उन हिस्सों को फिर से बनाने पर काम कर रहा हूं जो मैं वर्तमान में काम कर रहा हूं - न केवल इसे खुद को बेहतर समझने के लिए, बल्कि उन लोगों के लिए भी इसे आसान बनाने के लिए जो कोड पर काम कर रहे हैं।

मैं यह सोचने के पक्ष में झुक जाता हूं कि स्व-दस्तावेजीकरण कोड अच्छा है । मुझे लगता है कि यह क्लीनर है और अगर कोड खुद के लिए बोलता है, तो ठीक है ... यह बहुत अच्छा है

दूसरी ओर हमारे पास javadocs जैसे दस्तावेज हैं। मुझे यह पसंद है, लेकिन एक निश्चित जोखिम है कि यहां टिप्पणियां पुरानी हो गई हैं (साथ ही सामान्य रूप से टिप्पणियां भी)। हालांकि, अगर वे अप-टू-डेट हैं, तो वे एक जटिल एल्गोरिथ्म को समझने के साथ बेहद उपयोगी हो सकते हैं।

इसके लिए सबसे अच्छे अभ्यास क्या हैं? आप स्व-दस्तावेजीकरण कोड और javadocs के बीच की रेखा कहाँ खींचते हैं?

जवाबों:


24

सेल्फ-डॉक्यूमेंटिंग कोड (और इन-कोड कमेंट्स) और जवादोक टिप्पणियों में दो अलग-अलग लक्ष्य दर्शक होते हैं।

कोड और टिप्पणियाँ जो कोड फ़ाइल में रहती हैं, वे डेवलपर्स के लिए हैं। आप यहाँ उनकी चिंताओं को दूर करना चाहते हैं - यह समझना आसान बनायें कि कोड क्या करता है और कोड क्यों होता है। टिप्पणियों के साथ युग्मित उपयुक्त चर नामों, विधियों, कक्षाओं, और इसी तरह (स्व-दस्तावेजीकरण कोड) का उपयोग यह प्राप्त करता है।

Javadoc टिप्पणियाँ आम तौर पर एपीआई के उपयोगकर्ताओं के लिए होती हैं। ये भी डेवलपर्स हैं, लेकिन वे सिस्टम की आंतरिक संरचना के बारे में परवाह नहीं करते हैं, बस सिस्टम, सिस्टम, इनपुट और सिस्टम के आउटपुट। कोड एक ब्लैक बॉक्स के भीतर समाहित है। इन टिप्पणियों का उपयोग यह बताने के लिए किया जाना चाहिए कि कुछ कार्यों को कैसे करना है, संचालन के अपेक्षित परिणाम क्या हैं, जब अपवादों को फेंक दिया जाता है, और क्या महत्वपूर्ण मूल्यों का अर्थ है। दस्तावेज के एक जवादोक-जनरेट सेट को देखते हुए, मुझे पूरी तरह से यह समझने में सक्षम होना चाहिए कि आपके कोड की एक रेखा को देखे बिना अपने इंटरफेस का उपयोग कैसे करें।


+1, यह एक अच्छा कॉल है। मुझे लगता है कि इसके साथ मेरी मुख्य पकड़ यह है कि मैं इसे दो अलग-अलग लक्ष्य दर्शकों के रूप में नहीं देखता, लेकिन आप सही हैं।
एंड्रियास जोहानसन

1
@ भारत - मुझे सिस्टम के बाहरी किनारों (जैसे सेवा एपीआई) और इसके अंदर की कक्षाओं के बीच अंतर करना उपयोगी लगता है। मैं अक्सर उन परियोजनाओं पर काम करता हूं जहां सम्मेलन सभी सार्वजनिक तरीकों से javadoc करने के लिए होता है, लेकिन मैं बाहरी कक्षाओं पर बहुत अधिक ध्यान रखता हूं ताकि कुछ संकेत दे सकें कि कक्षा (और सिस्टम) का उपयोग कैसे किया जाना चाहिए। आंतरिक कक्षाओं में, मुझे लगता है कि पाठक को अधिक डोमेन ज्ञान है और javadoc को कम से कम, विधि के नाम खुद के लिए अधिक बोलने देता है।
स्टीव जैक्सन

3
@SteveJackson मैं सहमत हूं, हालांकि, मैंने खुद को अधिक जावदोस्क (निजी सदस्यों पर भी) का उपयोग करते हुए पाया है क्योंकि IDEs (कम से कम ग्रहण और नेटबिन) कोड पूरा होने वाले टूलटिप्स में जावदोक टिप्पणियों को प्रदर्शित करते हैं। बेशक, वे सार्वजनिक रूप से सामना करने वाले इंटरफेस के रूप में साफ नहीं हैं, वे अन्य डेवलपर्स को सुझाव / नोट प्रदान करते हैं।
थॉमस ओवेन्स

24

कोड कहता है कि कैसे । टिप्पणियाँ कहती हैं कि क्यों , और शायद क्यों नहीं

भविष्य के पाठकों और अपने कोड के अनुरक्षकों को प्रदान करना आपका काम है। आप सभी को कोड में रख सकते हैं, और बाकी टिप्पणियों में।

ध्यान दें कि कब्जा करने के लिए सबसे कठिन चीजें डिजाइन के फैसले हैं - उन्हें भी याद रखें।


2
+1: यह एक विशेष अर्थ में "या तो या" नहीं है। यह एक समावेशी अर्थ में दोनों है।
S.Lott

मैं निश्चित रूप से इसके लिए सहमत हूं। क्या विशेष रूप से javadocs की बात आती है तो आप इस पर विचार करेंगे? जैसे, मैं कल्पना कर सकता हूं कि उदाहरण के लिए एपीआई के लिए क्या तरीका उपयोगी हो सकता है।
एंड्रियास जोहानसन 12

सबसे IDE से Javadocs बहुत आसानी से सुलभ हैं। आगे की जानकारी पर नेविगेट करना आसान बनाएं।

+1: मैंने जो सबसे अच्छी टिप्पणियाँ देखीं, उनमें उन कागज़ों के संदर्भ शामिल हैं जहाँ इस्तेमाल किए गए एल्गोरिदम पर गहराई से चर्चा की गई थी; यह वह चीज नहीं है जिसे चर / विधि नामों में स्व-प्रलेखित किया जा सकता है, और जरूरी नहीं कि यह डॉक्स-टिप्पणियों में हो, क्योंकि एल्गोरिदम कार्यान्वयन का हिस्सा है और इंटरफ़ेस नहीं ।
डोनाल्ड फेलो

4

Javadocs का उपयोग करने से वास्तविक अंतर नहीं पड़ता है - क्योंकि उत्पन्न डॉक्स में टिप्पणियों के पाठ के साथ-साथ आपके कार्यों का नाम होता है, इसलिए कोई कारण नहीं है कि आपको फ़ंक्शन नाम से स्पष्ट होने वाली टिप्पणियों में कुछ भी दोहराना चाहिए।

यदि, दूसरी ओर, आपके पास एक फ़ंक्शन है जहां किसी को कार्यान्वयन को देखने के लिए पहले यह समझना होगा कि यह क्या अच्छा है (इस प्रकार यह जानकारी Javadocs को उपलब्ध नहीं है), तो कोड IMHO है स्व-दस्तावेजीकरण, कोई फर्क नहीं पड़ता कार्यान्वयन कितना स्पष्ट है।


3
+1 मेरा पसंदीदा है जब कंपनी कोड मानक के लिए प्रलेखित विधियों की आवश्यकता होती है, लेकिन हर कोई एक जनरेटर का उपयोग करता है जो कोड को पहले से ही कहता है। थकाऊ, और बेकार।
Kryptic

1

मुझे लगता है कि javadocs के साथ, चीजें किसी भी प्रलेखन के साथ समान हैं - मुख्य नियम है:

दर्शकों का अनुसरण करें

क्या कई लोग आपके javadocs पढ़ते हैं? यदि हाँ, तो इसे सही होने में प्रयासों को निवेश करने में समझदारी है।

क्या आपके पाठक पढ़ाई के लिए javadocs के पक्ष में कोड पढ़ना छोड़ देते हैं ? यदि हाँ, तो इसे अच्छी तरह से लिखने पर प्रयासों को खर्च करने के लिए यह दोगुना है।

  • यह बिल्कुल JDK प्रलेखन के मामले में है । लगता है कि सन / ओरेकल ने इन पर बहुत प्रयास किए और उन्हें लगता है कि एपीआई डॉक्स में एक अच्छा खासा भुगतान किया जा रहा है।

अब, क्या यह आपका मामला है? यदि नहीं, तो दो बार सोचें कि क्या जावास्क्रिप्ट में निवेश किए गए प्रयास उचित हैं।

जैसा कि पहले ही ऊपर बताया गया है, रास्ता निकालने के लिए श्रोताओं को सुनें

  • यदि आप अपर्याप्त प्रलेखन के बारे में सक्रिय शिकायतें सुनते हैं, तो इसे सुधारने में निवेश करने पर विचार करें।
     
    यदि, दूसरी ओर, आप सभी सुनते हैं कि डेवलपर्स ब्रिंडेड नियमों के बारे में शपथ ले रहे हैं, जो उन्हें बेकार टाइपिंग पर समय बर्बाद करने के लिए मजबूर करते हैं, ठीक है, तो संभावना अधिक है कि आपके javadocs प्रयास सबप्राइम बंधक में निवेश करने की तरह हैं । इसके बजाय बेहतर निवेश के बारे में सोचें।

0

मैं सिर्फ इस चिंता पर टिप्पणी करना चाहता हूं कि जावदोक टिप्पणियाँ पुरानी हो सकती हैं। जबकि @JonathanMerlet यह कहने में सही है कि Javadoc स्थिर होना चाहिए, आप Javadoc और टिप्पणियों के साथ-साथ सहकर्मी समीक्षा के दौरान कोड की समीक्षा करके भी मदद कर सकते हैं। क्या कोड क्या कर रहा है के साथ टिप्पणियाँ मेल खाती हैं? यदि नहीं, जो गलत है, और जोर देकर डेवलपर इसे ठीक करें। अन्य डेवलपर्स को भी ऐसा करने के लिए प्रोत्साहित करने का प्रयास करें। यह न केवल बाहरी प्रलेखन (Javadoc टिप्पणियों) को अप-टू-डेट रखने में मदद करता है, बल्कि किसी भी नियमित कोड टिप्पणियों के रूप में भी। यह उन डेवलपर्स की मदद करता है जो आपके रीफैक्टरिंग के बाद साथ आते हैं, कोड को अधिक तेज़ी और आसानी से समझते हैं, और भविष्य में इसे बहुत सरल बनाए रखते हैं।


-1

मुझे लगता है कि javadocs उन हिस्सों के लिए उपयुक्त है, जिन्हें स्थिर रहना चाहिए (API) ताकि तारीखों से बाहर जाने वाली टिप्पणियों का जोखिम कम से कम हो, जबकि अक्सर परिवर्तन (कार्यान्वयन) के अधीन होने के लिए स्व दस्तावेज़ कोड महान है। बेशक, एपीआई परियोजना के दौरान बदल सकते हैं, लेकिन घोषणा से ठीक पहले हेडर होने, दोनों को सिंक में रखना मुश्किल नहीं है (कोड की कई पंक्तियों को समझाते हुए कई लाइनों पर एक टिप्पणी की तुलना में)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.