क्यों इतने सारे पुस्तकालयों के पास कोई / खराब दस्तावेज नहीं है? [बन्द है]


14

एक समान नस के रूप में कैसे हो सकता है स्रोत परियोजनाओं को उनके डिजाइन या वास्तुकला के बारे में प्रलेखन के बिना सफल हो सकता है? प्रश्न, मैं उत्सुक हूँ: अंत उपयोगकर्ता प्रलेखन में इतने सारे पुस्तकालयों की कमी क्यों है?

मेरा विचार यह है:

  1. ज्यादातर सभी इस बात से सहमत हैं कि सोर्स कोड पढ़ना सोर्स कोड लिखने से ज्यादा मुश्किल है।
  2. प्रलेखन के बिना, उस पुस्तकालय का उपयोग करने के लिए किसी को पुस्तकालय के स्रोत कोड को पढ़ना चाहिए।
  3. इसलिए, undocumented पुस्तकालय का उपयोग करना खरोंच से पुस्तकालय को फिर से बनाने की तुलना में अधिक काम है।
  4. नतीजतन, यदि आप चाहते हैं कि लोग आपके पुस्तकालय का उपयोग करें, तो आप बहुत अच्छी तरह से यह सुनिश्चित करेंगे कि यह दस्तावेज है।

मुझे पता है कि बहुत सारे डेवलपर्स डॉक्स लिखना पसंद नहीं करते हैं, और मैं मानता हूँ कि यह थकाऊ काम हो सकता है। लेकिन यह जरूरी काम है। मैं यहां तक ​​कहूंगा कि दुनिया में सबसे अच्छा प्रोग्रामर का इंटरफ़ेस होने की तुलना में एक पुस्तकालय का अच्छा प्रलेखन है। (लोग हर समय चमकदार पुस्तकालयों का उपयोग करते हैं; कुछ लोग अनिर्दिष्ट पुस्तकालयों का उपयोग करते हैं)

ओह, ध्यान दें कि जब मैं प्रलेखन कहता हूं, तो मेरा मतलब है कि वास्तविक दस्तावेज। Sandcastle / Javadoc / Doxygen boilerplate नहीं।


6
शायद इसलिए कि आपने और मैंने ओपन सोर्स लाइब्रेरीज़ के लिए बहुत कम समय दिया है।
एरिक विल्सन

क्योंकि अच्छा प्रलेखन लिखना कठिन है , इसलिए अधिकांश डेवलपर्स उस समस्या को हल करते हैं बस इसे नहीं कर रहे हैं। इसके अलावा, सब कुछ स्पष्ट लगता है जबकि आप कोड लिखने के बीच में हैं। "मेरी लाइब्रेरी का उपयोग करना इतना आसान है कि यह स्व-दस्तावेजीकरण है !" -- हाँ सही।
कोडी ग्रे

मैं आपके विचार से पूरी तरह सहमत नहीं हूँ, विशेषकर आपके तीसरे बिंदु से। कोड लिखना हमेशा आसान नहीं होता है।
बर्नार्ड

जवाबों:


20

मुझे लगता है कि आपने ज्यादातर अपने ही सवाल का जवाब दिया है: क्योंकि ज्यादातर मामलों में, डेवलपर्स सिर्फ परेशान नहीं करेंगे। स्वयंसेवी परियोजनाओं में समस्या विशेष रूप से प्रचलित है।

मुझे लगता है कि हालांकि एक और बड़ी समस्या है: बहुत सारे मामलों में, डेवलपर्स ने वास्तव में एक समग्र मॉडल विकसित नहीं किया है कि उनकी लाइब्रेरी कैसे काम करती है (या बस उस मॉडल को स्पष्ट रूप से व्यक्त करने में कठिनाई होती है)। दुर्भाग्य से, उस मॉडल की कलात्मकता और सॉफ्टवेयर के टुकड़े एक साथ कैसे फिट होते हैं, यह अक्सर प्रलेखन का सबसे महत्वपूर्ण हिस्सा होता है।

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

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


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

@ बिली: अक्सर हाँ - या कम से कम वे अक्सर इसके बारे में केवल एक खंडित फैशन में सोचने की प्रवृत्ति रखते हैं - कोई व्यक्ति किसी व्यक्तिगत फ़ंक्शन का उपयोग कैसे करेगा, संपूर्ण पुस्तकालय का उपयोग करने के लिए समग्र दृष्टिकोण नहीं।
जेरी कॉफिन

9

मुझे लगता है कि कभी-कभी ऐसा होता है क्योंकि डेवलपर कोड में इतना लिपटा हुआ है कि यह उसके लिए "स्पष्ट" है कि यह कैसे काम करता है और वे यह नहीं देख सकते हैं कि यह किसी और के लिए स्पष्ट क्यों नहीं होगा। इसी तरह, उत्पाद वेब साइटों के भार का कहना है कि उनका उत्पाद कितना अद्भुत है, लेकिन वास्तव में आपको यह नहीं बताता कि यह क्या करता है!


5

आपने खुद ही जवाब दिया:

मुझे पता है कि बहुत सारे डेवलपर्स डॉक्स लिखना पसंद नहीं करते हैं, और मैं मानता हूँ कि यह थकाऊ काम हो सकता है।

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

जबकि कोई भी अच्छा कोडर अच्छे दस्तावेज के मूल्य को जानता है, इसे ठीक से करने के लिए उचित समय भी लगता है। जैसा कि यह सुखद नहीं है और एक लंबा समय लगता है, इसे "बाद में करने के लिए" ढेर में डाल दिया जाता है ताकि यह कभी भी संतोषजनक स्तर पर न हो।

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


3

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

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


3

वह व्यक्ति जो दस्तावेज लिखने के लिए सबसे योग्य है, वह व्यक्ति भी ऐसा करने के लिए कम से कम प्रेरणा रखता है:

वह (या वह) है:

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

मैं किसी के बारे में नहीं सोच सकता, जो "हम्म, जाने की संभावना कम है, मुझे वास्तव में इसके लिए कुछ उचित दस्तावेज लिखने में कुछ घंटे बिताने चाहिए"। वह क्यों करेगा?

और निश्चित रूप से, यह शायद मदद नहीं करता है कि इस शहरी किंवदंती के चारों ओर जा रहा है कि ऑटोगेन्जेनेटेड डॉक्सीजन-शैली की टिप्पणियां हैं जो आपको प्रलेखन के संदर्भ में चाहिए।

यहां तक ​​कि दुर्लभ मामलों में जहां एक डेवलपर वास्तव में प्रलेखन लिखने के लिए तैयार है, यह एक 50/50 मौका है कि डेवलपर को इस पंथ द्वारा यह सोचकर दिमाग लगाया गया है कि सभी की जरूरत है कि कुछ ऐसी टिप्पणियों को भर रहा है, जैसे आपको रत्न बता रहा है वह "फ़ंक्शन Foo getFoo()Foo प्रकार का ऑब्जेक्ट लौटाता है, और इसका उपयोग फू ऑब्जेक्ट प्राप्त करने के लिए किया जाता है"।


1

प्रलेखन? हमें किसी बदबूदार दस्तावेज की आवश्यकता नहीं है!

मुझे पता है कि कोड कैसे काम करता है, इसलिए मैं अपने कोड का दस्तावेजीकरण करने में समय क्यों लगाऊंगा? इसके अलावा, मुझे यह परियोजना शुक्रवार तक मिल गई है और मैं मुश्किल से इसे बनाने जा रहा हूं ...

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