स्व-दस्तावेजीकरण कोड (सेल्फ डॉक्यूमेंटिंग)

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

उद्देश्य
स्व-दस्तावेजीकरण प्रणालियों के लिए सामान्यतः बताए गए उद्देश्यों में शामिल हैं:


 * सोर्स कोड को पढ़ने और समझने में आसान बनाएं * विरासत प्रणालियों को बनाए रखने या विस्तारित करने के लिए आवश्यक प्रयास को कम करें * किसी सिस्टम के उपयोगकर्ताओं और डेवलपर्स के लिए टिप्पणी (कंप्यूटर प्रोग्रामिंग) या सॉफ्टवेयर मैनुअल जैसे द्वितीयक दस्तावेज़ स्रोतों से परामर्श लेने की आवश्यकता को कम करें * स्व-निहित ज्ञान प्रतिनिधित्व के माध्यम से स्वचालन की सुविधा प्रदान करना

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

व्यावहारिक विचार
कुछ व्यावहारिक विचार हैं जो इस बात को प्रभावित करते हैं कि स्व-दस्तावेजीकरण प्रणाली के उद्देश्यों को कितनी अच्छी तरह साकार किया जा सकता है।


 * नामकरण परंपरा की एकरूपता (प्रोग्रामिंग) * गाढ़ापन * एप्लिकेशन का दायरा और सिस्टम आवश्यकताएँ

उदाहरण
नीचे स्व-दस्तावेजीकरण कोड का एक बहुत ही सरल उदाहरण दिया गया है, जिसमें मानव पाठकों के लिए कोड के तर्क को और अधिक स्पष्ट बनाने के लिए स्पष्ट टिप्पणियों के स्थान पर नामकरण परंपराओं का उपयोग किया गया है।

आलोचना
जेफ रस्किन ने स्व-दस्तावेजीकरण कोड में विश्वास की आलोचना करते हुए कहा कि कोड इस तर्क को स्पष्ट नहीं कर सकता है कि कार्यक्रम क्यों लिखा जा रहा है या इसे इस तरह से क्यों लागू किया गया है।

यह भी देखें

 * ऑटोलॉजिकल शब्द
 * कोड पठनीयता
 * टिप्पणी (कंप्यूटर प्रोग्रामिंग)
 * नियंत्रित प्राकृतिक भाषा
 * साक्षर प्रोग्रामिंग
 * प्राकृतिक भाषा प्रोग्रामिंग