2010-02-13 8 views
10

संभव डुप्लिकेट:
Is it possible to write good and understandable code without any comments?पठनीयता के लिए टिप्पणियों की आवश्यकता के बिना मैं कोड कैसे लिख सकता हूं?

जब कोडिंग को अक्सर मैंने सुना है अगर टिप्पणियां तो की जरूरत है इसका मतलब है कि कि कोड भी समझने के लिए मुश्किल है। मैं मानता हूं कि कोड पठनीय होना चाहिए, लेकिन अक्सर "भाषा" और अजीब वाक्यविन्यास के कारण भाषा स्वयं कोड को पालन करने में कठोर बनाती है। भाषाओं मैं सबसे अक्सर इस्तेमाल कर रहे हैं:

जावा Mootools रूबी Erlang

कोई युक्ति की सराहना की होगी? धन्यवाद

+1

डुप्लिकेट: http://stackoverflow.com/questions/784250/is-it-possible-to-write-good-and-understandable-code-without-any-comments – tangens

+3

ध्यान दें कि कोड आपको कुछ नहीं बता सकता है क्यों एक विशेष तरीके से किया जाता है, केवल कैसे। –

+2

यह एक मिथक है कि केवल टिप्पणियां "क्यों" बता सकती हैं। कभी-कभी आपको इसके लिए एक टिप्पणी की आवश्यकता होती है, लेकिन अक्सर कोड पूरी कहानी बता सकता है। देखो, एक टिप्पणी खराब नहीं है। लेकिन टिप्पणियों की एक संकेत होने की आवश्यकता पर विचार करें कि कोड, शायद, स्पष्ट किया जा सकता है। –

उत्तर

23

मुझे नहीं लगता कि आप आमतौर पर टिप्पणियों के बिना कोड लिख सकते हैं।

संक्षेप में, कोड दस्तावेज़ कैसे। टिप्पणियां दस्तावेज़ क्यों

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

+1

@ ब्रायन: और क्या गारंटी देता है कि कोड बदलते समय तदनुसार उन टिप्पणियों को अपडेट किया जाता है? और एक टिप्पणी का उपयोग क्या है जो मुझे बताता है कि कोड _n_ साल पहले कोड का मूल संस्करण क्यों है - जो वर्तमान संस्करण के लिए थोड़ी सी समानता नहीं है - यह वही तरीका लिखा गया था? –

+2

@ पीटर आप गारंटी देते हैं कि कोड समीक्षा या जोड़ी प्रोग्रामिंग का उपयोग कर टिप्पणियां अपडेट की गई हैं। – MarkJ

+0

मैं टिप्पणी लिखने से स्वयं दस्तावेज कोड लिखने पर अधिक ध्यान देना चाहता हूं। मुझे अक्सर कोड में बहुत सारी टिप्पणियां दिखाई देती हैं जिन्हें वास्तव में इसकी आवश्यकता नहीं होती है। – willcodejavaforfood

21

अनुशंसित पढ़ने: Clean Code रॉबर्ट सी मार्टिन द्वारा।

संक्षेप में, आप चाहिए

  • उपयोग सार्थक चर/विधि/वर्ग के नाम,
  • अपने कार्य/तरीकों कम रखने,
  • प्रत्येक वर्ग और विधि केवल एक काम करते हैं,
  • है प्रत्येक विधि में कोड abstraction के एक ही स्तर पर हो।

if कथन से भी मामूली जटिल अभिव्यक्तियों को निकालने का डर न करें; जो एक को पढ़ने के लिए स्पष्ट है, इस

if (i >= 0 && (v.size() < u || d == e)) ... 

या

if (foundNewLocalMaximum()) ... 

(पहले कोड स्निपेट में किसी भी अर्थ खोजने की कोशिश मत करो, मैं सिर्फ यह बना :-)

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

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

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

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

+1

मैं निश्चित रूप से सहमत हूं कि कोड बदलते समय टिप्पणियां अक्सर उपेक्षित होती हैं। अच्छी बात! – Zubair

+0

आपको कोड समीक्षा या जोड़ी प्रोग्रामिंग का उपयोग कर टिप्पणियों को अपडेट किया जाना चाहिए। स्वच्छ कोड की सिफारिश के लिए – MarkJ

+2

+1। –

7

कोड के साथ टिप्पणियां आपको बताती हैं कि आपने शुरुआत में कुछ निश्चित क्यों किया। इसका मतलब यह नहीं होना चाहिए कि कोड को समझना बहुत मुश्किल है।

4

सबसे महत्वपूर्ण चीजें हैं पालन करने के लिए कर रहे हैं:

  • एक साफ जिम्मेदारी
  • ऊपर विभिन्न मिश्रित नहीं होते हैं के साथ अपने चर, तरीकों, कक्षाएं ... सार्थक नाम
  • लिखने वर्गों/मॉड्यूल देना कोड के स्तर (एक विधि के अंदर बिट स्थानांतरण और उच्च स्तरीय तर्क न करें)
1

आपको कुछ नियमों का पालन करना होगा।

  • इकाइयों (चर, कक्षाएं, आदि) पठनीय और सार्थक नाम दें।
  • डिजाइन पैटर्न का उपयोग करें और उन्हें तदनुसार नाम दें, उदा। यदि यह Factory है तो इसे FooFactory नाम दें।
  • कोड ठीक से प्रारूपित, है आदि
+1

यदि आप डिज़ाइन पैटर्न का उपयोग करने जा रहे हैं तो हाँ, के लिए देवताओं के लिए, इसे तदनुसार नाम दें। लेकिन मुझे विश्वास नहीं है कि डिजाइन पैटर्न का उपयोग खुद को पठनीय कोड के लिए एक प्लस है - खासकर रूबी में । – Shadowfirebird

2

मुझे लगता है कि यह उपयोगी है अपने कोड के उपयोगकर्ताओं के लिए टिप्पणी लिखने के लिए - वर्गों/तरीकों/काम करता है, करना क्या है जब एक यह कैसे आदि कॉल करने के लिए अन्य में शब्द एपीआई दस्तावेज।

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

2

मुझे व्यक्तिगत रूप से लगता है कि अत्यधिक टिप्पणी करने के कारण बिल्कुल कोई टिप्पणी नहीं है। आपको बस सही संतुलन खोजने की जरूरत है। चीजों के लिए लंबे वर्णनात्मक नामों का उपयोग करने के बारे में यह मेरे लिए है: read this लंबे नामों पर केर्निगन & पाइक भी पढ़ें।

संबंधित मुद्दे