नीचे दिए गए कुछ कथन काफी व्यक्तिगत हैं, हालांकि कुछ औचित्य के साथ, और इस तरह से हैं।
टिप्पणी प्रकार
संक्षिप्त संस्करण के लिए ... मैं इसके लिए टिप्पणियों का उपयोग करता हूं:
- डेटा संरचनाओं में फ़ील्ड्स की व्याख्या करने वाली टिप्पणियां (उन लोगों के अलावा, मैं वास्तव में सिंगल लाइन टिप्पणियों का उपयोग नहीं करता हूं)
- ब्लॉकों के ऊपर असाधारण या उद्देश्य-उन्मुख बहु-पंक्ति टिप्पणियां
- सार्वजनिक उपयोगकर्ता और / या डेवलपर प्रलेखन स्रोत से उत्पन्न
विवरण और (संभवतः अस्पष्ट) कारणों के लिए नीचे पढ़ें।
अनुगामी टिप्पणियां
भाषा पर निर्भर करता है, या तो एकल-पंक्ति टिप्पणियों या बहु-पंक्ति टिप्पणियों का उपयोग कर रहा है। यह निर्भर क्यों करता है? यह सिर्फ एक मानकीकरण मुद्दा है। जब मैं C कोड लिखता हूं, मैं डिफ़ॉल्ट रूप से पुराने जमाने के ANSI C89 कोड का पक्ष लेता हूं, इसलिए मैं हमेशा पसंद करता हूं /* comments */
।
इसलिए मैं सी के अधिकांश समय में ऐसा करूंगा, और कभी-कभी सी-जैसे सिंटैक्स वाली भाषाओं के लिए (कोडबेस की शैली पर निर्भर करता है):
typedef struct STRUCT_NAME {
int fieldA; /* aligned trailing comment */
int fieldBWithLongerName; /* aligned trailing comment */
} TYPE_NAME;
Emacs अच्छा है और मेरे साथ ऐसा करता है M-;
।
यदि भाषा सिंगल-लाइन टिप्पणियों का समर्थन करती है और सी-आधारित नहीं है, तो मैं सिंगल-लाइन टिप्पणियों का उपयोग करने के लिए अधिक इच्छुक हूं। अन्यथा, मुझे डर है कि मैंने अब आदत डाल ली है। यह अनिवार्य रूप से बुरा नहीं है, क्योंकि यह मुझे संक्षिप्त होने के लिए मजबूर करता है।
मल्टी-लाइन टिप्पणियाँ
इसके लिए सिंगल-लाइन टिप्पणियों का उपयोग करते हुए मैं आपके संकल्पना से असहमत हूं। मैं इसका उपयोग करता हूं:
/*
* this is a multi-line comment, which needs to be used
* for explanations, and preferably be OUTSIDE the a
* function's or class' and provide information to developers
* that would not belong to a generated API documentation.
*/
या यह (लेकिन मैं ऐसा अक्सर नहीं करता हूं, एक व्यक्तिगत कोडबेस को छोड़कर या अधिकतर कॉपीराइट नोटिस के लिए - यह मेरे लिए ऐतिहासिक है और मेरी शैक्षिक पृष्ठभूमि से आता है। दुर्भाग्य से, अधिकांश आईडीई ऑटो-प्रारूप का उपयोग करते समय इसे खराब कर देते हैं) ।
/*
** this is another multi-line comment, which needs to be used
** for explanations, and preferably be OUTSIDE the a
** function's or class' and provide information to developers
** that would not belong to a generated API documentation.
*/
यदि वास्तव में जरूरत है, तो मैं इनलाइन का उपयोग कर टिप्पणी करूंगा, जो मैंने पहले टिप्पणी के लिए उल्लेख किया था, अगर यह एक अनुगामी स्थिति में इसका उपयोग करने के लिए समझ में आता है। उदाहरण के लिए, या switch
's case
स्टेटमेंट्स (दुर्लभ, मैं अक्सर स्विच का उपयोग नहीं करता)' या जब मैं किसी if ... else
नियंत्रण प्रवाह में शाखाओं का दस्तावेजीकरण करता हूं, तो एक बहुत ही विशेष रिटर्न केस पर । यदि यह इनमें से एक नहीं है, तो आम तौर पर फ़ंक्शन / विधि / ब्लॉक के चरणों की रूपरेखा के दायरे के बाहर एक टिप्पणी ब्लॉक मेरे लिए अधिक समझ में आता है।
मैं इनका उपयोग बहुत असाधारण रूप से करता हूं, सिवाय इसके कि अगर दस्तावेजी टिप्पणियों के समर्थन के बिना किसी भाषा में कोडिंग की जाए (नीचे देखें); जिस स्थिति में वे अधिक प्रचलित हो जाते हैं। लेकिन सामान्य मामले में, यह वास्तव में सिर्फ उन चीजों को प्रलेखित करने के लिए है जो अन्य डेवलपर्स के लिए हैं और आंतरिक टिप्पणियां हैं जिन्हें वास्तव में वास्तव में बाहर खड़े होने की आवश्यकता है। उदाहरण के लिए, एक अनिवार्य खाली ब्लॉक को "मजबूर" catch
ब्लॉक की तरह दस्तावेज करने के लिए :
try {
/* you'd have real code here, not this comment */
} catch (AwaitedException e) {
/*
* Nothing to do here. We default to a previously set value.
*/
}
जो मेरे लिए पहले से ही बदसूरत है लेकिन मैं कुछ परिस्थितियों में सहन करूंगा।
प्रलेखन टिप्पणियाँ
जावदोक और अल।
मैं आमतौर पर उन तरीकों और कक्षाओं पर उनका उपयोग दस्तावेज़ संस्करणों में एक फीचर (या इसे बदलकर) करने के लिए कर सकता हूं, खासकर यदि वह सार्वजनिक एपीआई के लिए है, और कुछ उदाहरण (स्पष्ट इनपुट और आउटपुट मामलों और विशेष मामलों के साथ) प्रदान करने के लिए। हालांकि कुछ मामलों में एक यूनिट केस इनका दस्तावेजीकरण करने के लिए बेहतर हो सकता है, यूनिट टेस्ट जरूरी नहीं कि मानव पठनीय हों (चाहे कोई भी डीएसएल-थैली का उपयोग न करें)।
वे मुझे फ़ील्ड्स / प्रॉपर्टी के दस्तावेज़ देने के लिए थोड़ा बग करते हैं, क्योंकि मैं इसके लिए कमेंट करना पसंद करता हूं और सभी डॉक्यूमेंटेशन जेनरेशन फ्रेमवर्क को ट्राई करने वाले डॉक्यूमेंट कमेंट्स का समर्थन नहीं करता। उदाहरण के लिए, Doxygen करता है, लेकिन JavaDoc नहीं करता है, जिसका अर्थ है कि आपको अपने सभी क्षेत्रों के लिए एक शीर्ष टिप्पणी की आवश्यकता है। मैं यह जान सकता हूं कि हालांकि, ज्यादातर समय जावा लाइनें अपेक्षाकृत लंबी होती हैं, इसलिए एक अनुगामी टिप्पणी मुझे अपनी सहिष्णुता सीमा से परे रेखा का विस्तार करके समान रूप से रेंगना होगा। यदि जावदोक कभी भी उस पर सुधार करने पर विचार करेगा, तो मैं बहुत खुश होऊंगा।
टिप्पणी-बाहर कोड
मैं सी-लाइक भाषाओं में केवल एक कारण के लिए सिंगल-लाइन का उपयोग करता हूं (अगर सख्त सी के लिए संकलन करने के अलावा, जहां मैं वास्तव में उनका उपयोग नहीं करता हूं): कोडिंग करते समय टिप्पणी करने के लिए सामान। अधिकांश आईडीई को एकल-लाइन टिप्पणियों (इंडेंट पर या कॉलम 0 पर संरेखित) के लिए टॉगल करना होगा, और जो मेरे लिए उपयोग केस फिट बैठता है। मल्टी-लाइन टिप्पणियों के लिए टॉगल का उपयोग करना (या कुछ आईडीई के लिए लाइनों के बीच का चयन करना), आसानी से टिप्पणी / असहजता के बीच स्विच करना कठिन बना देगा।
लेकिन जैसा कि मैं एससीएम में टिप्पणी-आउट कोड के खिलाफ हूं, यह आमतौर पर बहुत कम रहता है क्योंकि मैं कमेंट-आउट करने से पहले टिप्पणी को हटा दूंगा। ( इस सवाल पर मेरा जवाब "लाइन कमेंट्स और SCM में एडिट-बाय" )
टिप्पणियाँ शैलियाँ
मैं आमतौर पर लिखता हूं:
- दस्तावेजी टिप्पणियों के लिए सही व्याकरण (विराम चिह्न सहित) के साथ पूर्ण वाक्य, क्योंकि उन्हें बाद में एक एपीआई डॉक्टर या यहां तक कि एक उत्पन्न मैनुअल के हिस्से के रूप में पढ़ा जाना चाहिए।
- बहु-लाइनों टिप्पणी ब्लॉकों के लिए विराम चिह्न / कैप्स पर अच्छी तरह से स्वरूपित लेकिन अधिक ढीला
- विराम चिह्नों के बिना अनुगामी ब्लॉक (अंतरिक्ष के कारण और आमतौर पर क्योंकि टिप्पणी एक संक्षिप्त है, जो एक कोष्ठक की तरह अधिक पढ़ता है]
साहित्य प्रोग्रामिंग पर एक नोट
हो सकता है कि आप लिटरेट प्रोग्रामिंग में दिलचस्पी लेना चाहें , जैसा कि डोनाल्ड नुथ ने इस पत्र में प्रस्तुत किया है ।
साक्षर प्रोग्रामिंग प्रतिमान, [...] कंप्यूटर द्वारा लगाए गए तरीके और क्रम में प्रोग्राम लिखने से एक कदम दूर का प्रतिनिधित्व करता है, और इसके बजाय प्रोग्रामर को अपने विचारों के तर्क और प्रवाह द्वारा मांग किए गए क्रम में प्रोग्राम विकसित करने में सक्षम बनाता है। 2 साहित्य कार्यक्रम एक साधारण मानव भाषा में तर्क के निर्बाध विस्तार के रूप में लिखे जाते हैं, बहुत कुछ एक निबंध के पाठ की तरह [...]।
साक्षर प्रोग्रामिंग उपकरण एक साक्षर स्रोत फ़ाइल से दो अभ्यावेदन प्राप्त करने के लिए उपयोग किए जाते हैं: एक कंप्यूटर द्वारा आगे संकलन या निष्पादन के लिए उपयुक्त, "पेचीदा" कोड, और दूसरा स्वरूपित प्रलेखन के रूप में देखने के लिए, जिसे कहा जाता है कि "बुना हुआ" साक्षर स्रोत।
एक साइड नोट और उदाहरण के रूप में: अंडरस्कोर.जेएस जावास्क्रिप्ट फ्रेमवर्क, मेरी टिप्पणी शैली के साथ गैर-अनुपालन के बावजूद, एक अच्छी तरह से दस्तावेज़ कोडबेस और एक अच्छी तरह से निर्मित एनोटेट स्रोत का एक बहुत अच्छा उदाहरण है - हालांकि शायद इसका उपयोग करने के लिए सबसे अच्छा नहीं है। एक एपीआई संदर्भ)।
ये व्यक्तिगत सम्मेलन हैं। हां, मैं अजीब हो सकता हूं (और आप भी हो सकते हैं)। यह ठीक है, जब तक आप साथियों के साथ काम करते समय अपनी टीम के कोड सम्मेलनों का पालन करते हैं और उनका पालन करते हैं, या मौलिक रूप से उनकी वरीयताओं पर हमला नहीं करते हैं और अच्छी तरह से सहवास करते हैं । यह आपकी शैली का हिस्सा है, और आपको एक कोडिंग शैली विकसित करने के बीच की महीन रेखा का पता लगाना चाहिए जो आपको एक कोडर के रूप में परिभाषित करता है (या विचार या संगठन के एक स्कूल के अनुयायी के रूप में जिसके साथ आपका संबंध है) और निरंतरता के लिए एक समूह के सम्मेलन का सम्मान करता है। ।
:3,7 Align //
3-7 की तर्ज पर टिप्पणियों को संरेखित करें।