मैं आवश्यक रूप से जटिल कोड संरचनाओं का दस्तावेज कैसे बनाऊं?


9

अगर मेरे पास कोड का एक टुकड़ा है जो गणितीय या संरचनात्मक रूप से काफी जटिल और अनियमित रूप से ऐसा है, तो मैं इस कोड के टुकड़े के दस्तावेजीकरण के बारे में कैसे जाऊंगा? विशेष रूप से, मैं यह कैसे सुनिश्चित कर सकता हूं कि जिस व्यक्ति के पास गणितीय या वास्तु कौशल नहीं है, मैं इसे प्रलेखन से समझ सकता हूं? क्या मुझे गणित के सभी दस्तावेज भी चाहिए? एक ट्यूटोरियल के लिए लिंक? क्या जटिल संरचनाओं के मामले में कुछ दृश्य सहायता लिंकेज है?


1
यह स्पष्ट रूप से इस बात पर बहुत हद तक निर्भर करेगा कि कोई गणितीय जटिलता या वास्तुशिल्प जटिलता के बारे में बात कर रहा था या नहीं। वे सभी समान तरीके से प्रलेखित नहीं हैं। यह किसका है?
— एडवर्ड स्ट्रेंज

2
संबंधित: एक प्रोग्रामर को कोड के पीछे विस्तारित तर्क की व्याख्या कहां करनी चाहिए? । मुझे विशेष रूप से परीक्षणों-जैसे-ए-डॉक दृष्टिकोण का जवाब में से एक में सुझाव दिया गया है।
— कुटकी

1
@ गनत, क्यों धन्यवाद। मुझे लगता है कि कुल मिलाकर, उस सवाल का मेरा जवाब इस सवाल के लिए भी काम करेगा।
— मार्क बूथ

@MarkBooth अधिकार, संबंधित प्रश्न का सुझाव देते समय यह ज्यादातर आपका जवाब था जो मुझे ध्यान में था। उत्तर अच्छा आम तौर पर है, लेकिन परीक्षण के बारे में बात विशेष रूप से एक घंटी बजा के रूप में मैं इसे का उपयोग किया था एक बार एक विशेष रूप से जटिल एल्गोरिथ्म कार्यान्वयन के लिए
— कुटकी

जवाबों:


8

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

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

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

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


3

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


0

आपकी टीम / कंपनी को उस हद तक कोड का दस्तावेज़ चाहिए। यदि एक जूनियर देव कोड को बनाए रखने के लिए आवश्यक होने जा रहा है, आपको गणित के बारे में विस्तार से जाना पड़ सकता है। यह एक प्रबंधन निर्णय है और उन्हें आपको आवश्यक समय देना होगा।

मुझे नहीं लगता कि आपको कोड का इतना अधिक दस्तावेज़ देना होगा कि आप कम डेवलपर द्वारा प्रतिस्थापित किए जा सकें। यदि यह चिंता का विषय है, तो आपको दस्तावेज़ के लिए समय दिया जाना चाहिए।

आपको उनके लिए वेब खोज नहीं करनी चाहिए।


1
"अगर एक जूनियर देव कोड को बनाए रखने के लिए आवश्यक होने जा रहा है ..." मेरे अनुभव में यह सिर्फ यह मान लेना बेहतर है कि आपकी टिप्पणियों को पढ़ने वाला हर कोई एक जूनियर है। देव। यदि वे नहीं हैं तो वे आपकी टिप्पणियों को नहीं पढ़ेंगे। भले ही वे जूनियर न हों। और अभी भी आपकी टिप्पणियों, शब्दजाल और मान्यताओं को गलत तरीके से पढ़ा जा रहा है। अंत में ... अधिकांश देवता, जो मनुष्य को ज्ञात हर दूसरे क्षेत्र की तरह हैं, जीवन के माध्यम से प्राप्त करते हैं वास्तव में एक लानत नहीं देते हैं और वास्तव में "jr" की तुलना में वास्तव में पूरी तरह से बेहतर नहीं होते हैं।
— एडवर्ड स्ट्रेंज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.