कितना प्रलेखन पर्याप्त है?


15

कितना तकनीकी (भविष्य के डेवलपर्स के लिए) प्रलेखन पर्याप्त है ? क्या घंटों कोडिंग और घंटों के दस्तावेज़ीकरण के बीच एक अनुपात है जो उचित है?

पापड़ीमौलिस का तर्क है कि आपको चाहिए

सबसे समझ को सुविधाजनक बनाने के लिए आवश्यक कम से कम प्रलेखन का उत्पादन करें,

क्या यह एक अच्छी दिशानिर्देश है, या क्या कुछ विशिष्ट चीजें हैं जिन्हें मुझे बनाना चाहिए?


1
अंतिम उपयोगकर्ता / UI या तकनीकी / स्रोत कोड प्रलेखन?

2
स्रोत कोड सलाह के लिए, हमारी साइट का पहला प्रश्न देखें: programmers.stackexchange.com/questions/1/…
Tamara Wijsman

जवाबों:


24

कैसे के बारे में कुछ दालान प्रयोज्य परीक्षण? प्रोजेक्ट से अपरिचित किसी डेवलपर को कोड और प्रलेखन दिखाएं। जब आप ऐसा कर सकते हैं कि बिना किसी अतिशयोक्ति के कुछ समझाने के लिए उन्हें कोड की समीक्षा करते हुए देखें, तो आपके पास पर्याप्त है।


1
+1 मैं उस विचार को भी पसंद करता हूं। अपने सॉफ़्टवेयर का विकास करें ताकि यह इतना सहज हो कि प्रलेखन आवश्यक न हो।

12

La perfection est atteinte non pas quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retirer।
ओंत्वान डे सेंट - एक्सुपरी

(अंग्रेजी में: पूर्णता तब तक नहीं होती है, जब कुछ और जोड़ना नहीं होता है, लेकिन जब हटाने के लिए अधिक कुछ नहीं होता है)।

1
तो एक परियोजना जहां सभी दस्तावेज हटा दिए गए हैं, एकदम सही है?

@ ThorbjørnRavnAndersen - नहीं, पूर्णता तब प्राप्त होती है जब किसी भी अधिक सामग्री को हटाने से संपूर्ण रूप से प्रलेखन के लायक कम हो जाएगा।
cjmUK

1
@cjmUK और उस व्याख्या से पूछे गए प्रश्न का उत्तर कैसे दिया जाता है?

@ ThorbjørnRavnAndersen। यह नहीं है; यह आपकी टिप्पणी के जवाब में एक टिप्पणी थी- जो, रिकॉर्ड के लिए, मुझे संदेह है कि बेनोइट के उत्तर की गलत व्याख्या थी। केवल बेनोइट सुनिश्चित करने के लिए जवाब दे सकता है। हालाँकि, मेरा जवाब कहीं और सूचीबद्ध है ...
cjmUK

2
गलत। इसका मतलब है कि अधिक बेहतर जरूरी नहीं है। ब्रेविटी को महत्व दिया जाना चाहिए, लेकिन स्पष्ट रूप से नहीं अगर कुछ सरल बनाने का मतलब उपयोगी जानकारी को याद करना है। लेकिन समान रूप से, दस्तावेज़ के वॉल्यूम और वॉल्यूम लिखना किसी अन्य डेवलपर के लिए सबसे उपयोगी जानकारी तक पहुंचना कठिन बना सकता है। दस्तावेज़ीकरण लिखते समय, आपको बस यह सोचने की ज़रूरत नहीं है कि अभी भी क्या गायब है, बल्कि आपके पास क्या है जो आपको वास्तव में ज़रूरत नहीं है।
cjmUK

3

मैं कुछ समय से इस विषय पर सोच रहा था।

मेरा निष्कर्ष है - यह मात्रा की बात नहीं है, बल्कि गुणवत्ता और संदर्भ की है।

उदाहरण के लिए, एक उचित प्रोजेक्ट संरचना यह बताते हुए टिप्पणी करती है कि फाइलें कहां स्थित हैं (कार्यान्वयन बनाम गहनता)

इसी तरह, संदर्भ को स्पष्ट करने के लिए वर्गीकरण नामकरण (एक रोगी पर आईडी -> रोगी। डी)।

मेरा मानना ​​है कि डीडीडी का अच्छा प्रलेखन में एक कहना है - वर्गीकरण संदर्भ प्रदान करता है, संदर्भ सीमाएं बनाता है और सीमाएं जानबूझकर कार्यान्वयन को जन्म देती हैं (यह वह जगह है जहां यह मौजूद है, बजाय इसके अस्तित्व की आवश्यकता है)।

कोड अपने आप में पर्याप्त नहीं माना जाता है कि उसे दस्तावेज माना जाए। अधिकांश मामलों में समस्या इस तथ्य में नहीं रहती है कि कोड के काम करने की टिप्पणी की गई है या टिप्पणी नहीं की गई है, बल्कि ड्राइविंग बल (डोमेन लॉजिक) नहीं है।

हम कभी-कभी यह भूल जाते हैं कि बॉस कौन है - यदि कोड बदलता है, तो डोमेन तर्क या तर्क नहीं होना चाहिए, लेकिन यदि डोमेन तर्क या तर्क परिवर्तन कोड निश्चित रूप से होगा।

संगति बहुत महत्वपूर्ण है - यदि यह सुसंगत नहीं है तो स्वयं द्वारा सम्मेलन बेकार है।

डिजाइन पैटर्न सिर्फ 'अच्छा अभ्यास' नहीं हैं - यह हमें डेवलपर्स को समझना चाहिए कि लिंगो है। एक कारखाने में एक नए प्रकार को जोड़ने के लिए एक डेवलपर को बताना एक नए प्रकार को एक विधि में जोड़ना बेहतर है (जहां संदर्भ और संगतता कमजोर या गायब है)।

आधा संघर्ष परिचित है

एक तरफ ध्यान दें, तो एपीआई जो बहुत सारे प्रलेखन का पक्ष लेते हैं, वे बहुत ही डोमेन और संदर्भ संवेदनशील हैं। कभी-कभी डुप्लिकेटिंग कार्यक्षमता बुराई नहीं है (एक ही बात, विभिन्न संदर्भों) और इसे अलग-अलग माना जाना चाहिए।

टिप्पणी करने के संदर्भ में, तर्क के पीछे डोमेन तर्क को इंगित करना हमेशा अच्छा होता है।

उदाहरण के लिए, आप चिकित्सा उद्योग में काम कर रहे हैं। अपनी विधि में आप "IsPatientSecure = true;" लिखते हैं।

अब, कोई भी सभ्य प्रोग्रामर यह पता लगा सकता है कि मरीज को सुरक्षित बताया जा रहा है। लेकिन क्यों? निहितार्थ क्या हैं?

इस मामले में रोगी एक कैदी है जिसे सुरक्षित रूप से एक ऑफ परिसर अस्पताल में स्थानांतरित किया गया था। यह जानने के बाद, उन घटनाओं की कल्पना करना आसान है जो इस बिंदु तक ले जाते हैं (और शायद अभी भी क्या होने की जरूरत है)।

हो सकता है कि यह पोस्ट दार्शनिक लगे - लेकिन याद रखें कि यह 'तर्क' या 'तर्क' है जिसके बारे में आप लिख रहे हैं - कोड नहीं।


1

मैं पापाडिमुलिस बोली से सहमत हूं। स्रोत कोड स्वयं के लिए बोल सकता है, लेकिन कोड आपको यह नहीं बता सकता है कि यह क्यों मौजूद है, इसका उपयोग कैसे किया जाना चाहिए, और कोड को कैसे व्यवहार करना चाहिए।

मैं एक अच्छा अनुपात नहीं जानता।

मुझे बहुत कम प्रलेखन के साथ कोड की सैकड़ों लाइनें विरासत में मिलीं। मेरे लिए यह समझना मुश्किल हो गया कि कोड क्यों लिखा गया था। जब मुझे पता चला कि कोड क्यों लिखा गया था, तो मुझे यह पता लगाना था कि कोड का उपयोग कैसे करना है। मुझे यह पता चलने के बाद, मुझे यह समझना था कि यह कैसे व्यवहार किया जाता है ताकि मैं कोड का समर्थन और रखरखाव कर सकूं।

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


1

आपको स्वयं अनुमान लगाने से रोकने के लिए पर्याप्त है।

यदि आपके काम के दौरान किसी भी समय आप "हम्म शायद मुझे यह दस्तावेज चाहिए" जैसे हैं, तो आगे बढ़ें और इसे करें। फिर, यदि आपने कुछ दस्तावेज लिखे हैं और आप "शायद मैं इसे और अधिक समझाऊं" जैसा है, तो आगे बढ़ें और ऐसा करें।

कुल्ला-दोहराएँ जब तक कि भावना दूर नहीं हो जाती।


1
-1: आप मूल रूप से कह रहे हैं 'अह्ह्ह्ह ... आप जो महसूस करते हैं वह करें'। जो एक गैर जवाब है।
स्टीवन एवर्स

वह कहते हैं, 'जो कुछ भी आपको लगता है उसकी आवश्यकता है' जो मुझे एक वैध जवाब की तरह लगता है। मैं बहुत अधिक विशिष्ट उत्तरों से सावधान रहूंगा।
cjmUK

1

मैंने पाया है कि जॉर्ज फेयरबैंक्स की पुस्तक जस्ट इनफ सॉफ्टवेयर आर्किटेक्चर में प्रस्तुत किया गया एक जोखिम-चालित दृष्टिकोण , यह समझने के लिए बहुत अच्छी तरह से काम करता है कि प्रलेखन कितना पर्याप्त है। आप उस अनुभाग को पढ़ सकते हैं जो इस अवधारणा (अध्याय 3) को उसकी वेबसाइट पर प्रस्तुत करता है लेकिन मुख्य विचार निम्नलिखित है:

  • जोखिम के रूप में "सिस्टम समझ" के बारे में चिंता करने वाली चीजों को व्यक्त करें
  • जोखिमों को प्राथमिकता दें
  • जब तक आपकी टीम प्रोजेक्ट जोखिम को पर्याप्त रूप से कम नहीं कर लेती है, तब तक जोखिमों को कम करें। इस मामले में आप शायद किसी तरह के दस्तावेज़ बना रहे हैं।

चिंताओं को शांत करने में मदद करने के लिए आप जोखिमों को प्राथमिकता दे सकते हैं, मैंने कुछ ऐसे लक्ष्यों को पहचानने में मददगार पाया है जिन्हें थ्रेसहोल्ड ऑफ सक्सेस कहा जाता है, यह उन लक्ष्यों का न्यूनतम सेट है जो आपकी टीम सोचती है कि "सफल" प्रोजेक्ट को अवश्य प्राप्त करना चाहिए। दस्तावेज़ीकरण के दृष्टिकोण से एक उदाहरण ToS कुछ ऐसा हो सकता है "एक डेवलपर को पहली बार फ्रेमवर्क लेने के 4 घंटे के भीतर एक साधारण प्लग-इन बनाने में सक्षम होना चाहिए।"

अब कुछ जोखिमों की पहचान करें। आपके द्वारा बनाई गई प्रणाली के साथ (या निर्माण कर रहे हैं) ऐसी कौन सी चीजें हैं जो आपकी टीम को सबसे ज्यादा चिंतित करती हैं? इन्हें जोखिम वाले बयानों के रूप में देखें। मुझे एसईआई की स्थिति-परिणाम शैली पसंद है लेकिन अन्य हैं। उदाहरण:

  • डेटा मॉडल बड़ा और जटिल है; डेवलपर्स को नहीं पता हो सकता है कि किसी दिए गए स्थिति में कौन से डेटा तत्वों का उपयोग करना है।
  • विश्वसनीयता बढ़ाने के लिए सिस्टम में एपीआई कनेक्शन सीमाएं हैं; डेवलपर्स गलती से कनेक्शन की सीमा को पार कर सकते हैं।
  • प्लग-इन को कई अनुक्रमिक चरणों में खपत किया जाता है; डेवलपर्स इन आदेशों को ध्यान में रखते हुए प्लग-इन का निर्माण नहीं कर सकते हैं।

अब एक टीम के रूप में, जोखिमों को प्राथमिकता दें। मल्टी-वोटिंग बहुत अच्छी तरह से काम करता है।

सर्वोच्च प्राथमिकता वाले जोखिमों को कम करें, और पहचान की शुरुआत तब तक दोहराएं जब तक कि आपकी परियोजना का विफल होना (थ्रेशोल्ड ऑफ सक्सेस द्वारा परिभाषित) एक सहनीय सीमा के भीतर न हो। आम तौर पर इसका मतलब यह होगा कि आपके पास कुछ जोखिम होंगे जो टीम सहमत हैं, एक चिंता का विषय नहीं है। ध्यान रखें कि आप शायद सभी जोखिमों को कम नहीं करना चाहेंगे। ऊपर दिए गए अंतिम जोखिम के लिए एक उदाहरण शमन रणनीति एक ट्यूटोरियल बनाने के लिए हो सकती है।


1

जितना संभव हो उतना कम, लेकिन जितना आवश्यक है

मुझे याद नहीं है कि मैंने पहली बार कहाँ और कब सुना है, लेकिन यह कई अनुप्रयोगों के साथ एक अधिकतम है।

प्रौद्योगिकी या एप्लिकेशन जितना अधिक जटिल होगा, उतने अधिक प्रलेखन की आवश्यकता होगी (स्पष्ट रूप से), लेकिन स्पष्ट रूप से आप ओवरबोर्ड जाने में समय बर्बाद नहीं करना चाहते हैं।

JohnFx का 'दालान परीक्षण' ध्वनि है। लेकिन खुद पर भरोसा रखो; आपने कोड विकसित किया है, और इसलिए आप सभी लोगों को उन तत्वों के लिए एक महसूस होना चाहिए जिन्हें अतिरिक्त ध्यान देने की आवश्यकता है, और वे तत्व जो सभी के लिए स्पष्ट होंगे। उन संघर्षों के बारे में सोचें जिनका आपने कोड विकसित किया था और आपको इस बात का अंदाजा होगा कि आपके कोड को देखने पर एक और डेवलपर क्या देखेगा।

प्रयास किए गए कोडिंग और प्रयास खर्च किए गए दस्तावेज़ीकरण के बीच किसी भी संबंध को भूल जाएं।


0

मेरा मानना ​​है कि आप इसे सटीक नियमों में नहीं डाल सकते। प्रलेखित करने का कारण यह है कि ज्ञान को आसानी से कच्चे कोड से एक रूप में इकट्ठा नहीं किया जाए ताकि अन्य लोग समझ सकें और शायद उक्त कच्चे कोड को बनाए भी रख सकें।

इसलिए यदि आप पर्याप्त दस्तावेज कर चुके हैं, तो एकमात्र तरीका यह है कि आप लक्षित दर्शकों से पूछें कि क्या यह पर्याप्त है। मेरा मानना ​​है कि "सहकर्मी समीक्षा" प्रक्रिया इस मोर्चे को करने में बहुत अच्छी है। गौर करें कि आपके सहकर्मी को यह समझने के लिए कि आपको किस बारे में बात करनी है, और उसे कम से कम करने के लिए कितना समझाने की आवश्यकता है।

यदि आपने पहले कभी ऐसा नहीं किया है, तो आप अनुमान नहीं लगा सकते हैं कि यह कितना काम करेगा, लेकिन कुछ पुनरावृत्तियों के बाद आपको यह पता चलेगा कि कितना आवश्यक है।

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