मैं न्यूनतम समय की समीक्षा के लिए अपने कोड को कैसे प्रलेखित करूं? [बन्द है]


22

मैं अपने कोड को ऐसे दस्तावेज करना चाहता हूं कि महीनों बाद फिर से कोड को पढ़ने और ब्राउज़ करने की न्यूनतम आवश्यकता हो।

मुझे पता है कि विभिन्न प्रकार के प्रलेखन हैं (स्रोत कोड और बाहर, अनुक्रम आरेख, और इसी तरह)।

मैं बस यह जानना चाहता हूं कि मेरे कोड को दस्तावेज करने का एक कुशल तरीका क्या है, ताकि जब कुछ महीने बाद मैं अपना कोड देखना चाहता हूं, तो मैं कोड पढ़ने और कोड प्रवाह को समझने में कम समय देता हूं।


42
कम समय पढ़ने के कोड को बाद में खर्च करने के लिए सबसे अच्छी विधि स्पष्ट और अधिक समझने योग्य कोड लिखना है ।
Mael


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

@ मेरे अपने कोड के डेवलपर और शायद अन्य डेवलपर्स कोड को देखते हुए।
Hamed_gibago

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

जवाबों:


16

मुझे स्वीकार करना चाहिए कि मैं उन कुछ चीजों से सहमत नहीं हूं जिन्हें अन्य उत्तरों की सिफारिश की गई है, इसलिए मैं अपने दो सेंट फेंकने जा रहा हूं;

टिप्पणियाँ

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

संपादित करें : टिप्पणी अनुभाग में चर्चा ने कुछ सही बताया है - खराब कोड लिखते समय आमतौर पर ओवर-कमेंटिंग की जाती है ।

आपके काम की टिप्पणी सटीक और न्यूनतम होनी चाहिए, लेकिन, मेरी राय में, निश्चित रूप से उपस्थित होना चाहिए। कोड की प्रत्येक 15 पंक्तियों के लिए कम से कम एक टिप्पणी। उदाहरण के लिए, कोड के ब्लॉक के शीर्ष पर, आप क्या कर रहे हैं, इसके बारे में एक पंक्ति जोड़ें:

def login(username: str, password: str, create_session: bool = True):

    # Filter the user we need from the database
    hash = md5(password)
    users = db.table("users", db_entities.USER)
    results = [x for x in users.query(lambda c: c.get("username") == username and c.get("password_hash") == hash)]


    if len(results) == 0:
        return None, None
    else:
        # Create a login session record in the database.
        if create_session:
            sessions = db.table("sessions", db_entities.SESSION)
            ses = sessions.new()
            ses.set("username", username) \
                .set("expiery", 31536000 + time.time())
            sessions.update(ses)
            return results[0], ses
        else:
            return results[0], None

न्यूनतम टिप्पणियां जो बताती हैं कि आप क्यों और क्या कर रहे हैं, पूरे कोड में बहुत सहायक हैं। मैं उस उत्तर से सहमत नहीं हूं जो बताता है

यदि मुझे कोड युक्त टिप्पणियां आती हैं, तो मैं सबसे खराब तैयारी करता हूं: कोड खराब होने की संभावना है, और ईमानदार होने के लिए टिप्पणियों के भी खराब होने की संभावना है।

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

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

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

# Logging into Gmail when the module is imported
_client = login()
def get_client():
    global _client
    return _client

उदाहरण स्पष्टीकरण: "नो शिट, शरलॉक। _client = login()मेल सेवा में लॉग इन करता है ? OMG!"

अधिक स्पष्टीकरण: login()विधि का login()उपरोक्त उदाहरण से विधि से कोई संबंध नहीं है ।

लेकिन जो टिप्पणियां मानकों से मेल खाती हैं, वे क्यों और कैसे नहीं की व्याख्या करती हैं, और सही सवालों का जवाब देती हैं, बहुत ( बहुत ) सहायक हैं।

इनलाइन टिप्पणी

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

उदाहरण के लिए, खराब इनलाइन टिप्पणियां:

outer = MIMEText(details["message"]) # Constructing a new MIMEText object
outer["To"] = details["to"] # Setting message recipient
outer["From"] = "xAI No-Reply" # Setting message sender
outer["Subject"] = details["subject"] # Setting message subject
outer.preamble = "You will not see this in a MIME-aware mail reader.\n" # I don't know what I'm doing here, I copied this from SO.
msg = outer.as_string() # Getting the string of the message
_client = details["client"] # Assigning the client
_client.sendmail(SENDER, details["to"], msg) # Sending the mail

टिप्पणियों के बिना इस कोड को पढ़ना और समझना बहुत आसान होगा, जो इसे गन्दा और अपठनीय बनाता है।

इसके बजाय, आपके कोड के अंदर टिप्पणियों को कोड पर ब्लॉक से ऊपर रखा जाना चाहिए, और उन्हें उन महत्वपूर्ण सवालों का जवाब देना चाहिए जो कोड ब्लॉक को पढ़ते समय उत्पन्न हो सकते हैं।

# Constructing the email object with the values 
# we received from the parameter of send_mail(details)
outer = MIMEText(details["message"])
outer["To"] = details["to"]
outer["From"] = "xAI No-Reply"
outer["Subject"] = details["subject"]
outer.preamble = "You will not see this in a MIME-aware mail reader.\n"
msg = outer.as_string()

# Sending the mail using the global client (obtained using login())
_client = details["client"]
_client.sendmail(SENDER, details["to"], msg)

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

समारोह प्रलेखन

व्यापक रूप से चर्चा की गई है। आपको हमेशा अपने पाठकों को यह बताना चाहिए कि आपका कार्य क्या है, क्यों और क्या करता है। यह कैसे होता है, यह प्रलेखन का नहीं है, लेकिन शायद फ़ंक्शन के फुटनोट्स का।

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

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


5
एक दिए गए उदाहरण से असहमत - एक विशाल समारोह में कई टिप्पणियां लिखने के बजाय, आपको इसे कई छोटे कार्यों से वर्णनात्मक नामों से रचना करनी चाहिए, जो टिप्पणियों के रूप में कार्य करेंगे। कोड वास्तव में क्या कर रहा है के साथ सिंक से बाहर होने के जोखिम के बिना ।
user11153

6
अंत में कुछ पवित्रता। कोड के प्रत्येक टुकड़े को निकालना जो एक टिप्पणी का उपयोग अपने स्वयं के कार्य में कर सकता है कि आप सैकड़ों फाइलों में फैले हजारों कार्यों के साथ कैसे अंत करते हैं।
user369450

2
वह दूसरा उदाहरण प्यारा है।
मोनिका

7
दूसरे उदाहरण में टिप्पणियाँ बहुत अधिक मौखिक हैं। उनमें से कुछ (जैसे "क्या हमें कुछ मिला?") सिर्फ वही दोहराता है जो कोड कहता है और बेहतर तरीके से निकाला जाएगा। अन्य के लिए, आप रीफ़ैक्टरिंग द्वारा अधिक पठनीयता प्राप्त कर सकते हैं, जैसे कि (स्ट्रीम.is_empty ()) लूप की स्थिति बनाना, या चेक को बाहर_के लिए ले जाना।
फ्राक्स

3
@cpburnz, "मुझे बहुत सी विरासत परियोजनाओं और तीसरे पक्ष के पुस्तकालयों के माध्यम से बिना किसी कोड टिप्पणी के उन टिप्पणियों की सराहना करने के लिए खुदाई करनी है जो बताती हैं कि क्या हो रहा है और क्यों"। बिल्कुल मेरी बात साथ: बकवास कोड समझाने के लिए टिप्पणियाँ हैं। चूँकि सवाल यह है कि "मैं कोड को आसानी से कैसे लिखूँ" तो स्पष्ट रूप से यह उत्तर गलत है क्योंकि यह पहली बार में अच्छा कोड लिखने के बजाय खराब कोड को समझाने के लिए टिप्पणी लिखने पर केंद्रित है।
डेविड एर्नो

55

IMO सबसे अच्छा प्रलेखन वह दस्तावेज है जिसकी आपको वास्तव में आवश्यकता नहीं है। मुझे लेखन दस्तावेज और टिप्पणियों से भी नफरत है।

उस के साथ कहा जा रहा है:

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

19
यहाँ प्रलेखन (अनिवार्य लिंक) के लिए एक अच्छा मीट्रिक है
नील

4
यह सूची में भी होना चाहिए: कोड में समझाएं कि आप उन चीजों को क्यों कर रहे हैं जो आप कर रहे हैं।
t3chb0t

2
अंतिम बुलेट आइटम के लिए +1, चूंकि समय
gmauch

4
numberOfItemsFoundहालांकि काफी क्रिया है; बहुत क्रिया भी एक मुद्दा है।
मथिउ एम।

6
@ मैथ्यूएमएम।, शायद ही कभी कोड में नाम के साथ एक समस्या है "बहुत क्रिया"। हालांकि बहुत कठिन या गूढ़ एक बहुत ही आम समस्या है।
डेविड अर्नो

25

अपने कोड को दस्तावेज़ीकरण मानें

आपका कोड आपका प्राथमिक दस्तावेज है। यह वास्तव में वर्णन करता है कि परिणामी ऐप, लाइब्रेरी या जो कुछ भी है, वास्तव में करता है। जैसे, उस कोड की समझ को गति देने वाले किसी भी प्रयास को कोड के साथ ही शुरू करना होगा।

पठनीय कोड लिखने के तरीके पर बहुत कुछ लिखा गया है, लेकिन कुछ प्रमुख बिंदु हैं:

  • खराब कोड की व्याख्या करने के लिए टिप्पणियों पर भरोसा न करें, कोड को बेहतर बनाएं और टिप्पणियों से छुटकारा पाएं,
  • लघु केंद्रित कार्यों, विधियों, वर्गों आदि को लिखें।
  • संदर्भ के लिए उपयुक्त नामों का उपयोग करें (जैसे nलूप के लिए अच्छा है, अधिक गुंजाइश वाले आइटम के लिए लंबे समय तक वर्णनात्मक नामों की आवश्यकता होती है),
  • समारोह के नामों को मानो वे टिप्पणी कर रहे थे, उदाहरण के लिए UpdtTblएक टिप्पणी के साथ उपयोग न करें यह समझाते हुए कि यह आपूर्ति नियमों के साथ तालिका को अपडेट करता है जब UpdateTableContentsWithSuppliedRulesनाम का उपयोग किया जा सकता है,
  • परस्परता से बचें। हर बार जब आप किसी चर की सामग्री को बदलते हैं, तो आप कोड की जटिलता को बढ़ाते हैं। उस नए मान को एक नए चर (एक अच्छे नाम के साथ) को सौंपें जहां संभव हो।
  • अंत में, और सबसे महत्वपूर्ण बात, "चतुर" कोड से बचें। एकमात्र वास्तविक चतुर कोड कोड है जिसे पढ़ना आसान है। यदि आप कुछ जटिल बिट कोड लिखते हैं और अपने आप को लगता है कि "वाह, क्या मैं यहाँ चतुर नहीं हूँ?", उत्तर लगभग "नहीं, तुम नहीं हो" की गारंटी है।

कोड पढ़ने में बेहतर बनें

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

टिप्पणियाँ एक कोड गंध हैं

तभी हम अन्य प्रकार के प्रलेखन के लिए आते हैं। सबसे पहले, जैसा कि पहले कहा गया था, टिप्पणियों से बचें। यदि मुझे कोड युक्त टिप्पणियां आती हैं, तो मैं सबसे खराब तैयारी करता हूं: कोड खराब होने की संभावना है, और ईमानदार होने के लिए टिप्पणियों के भी खराब होने की संभावना है। कोई है जो कोड के माध्यम से अच्छी तरह से संवाद नहीं कर सकता है, प्राकृतिक भाषा के माध्यम से किसी भी बेहतर संवाद करने में सक्षम होने की संभावना नहीं है।

ऑटोजेनरेटेड एपीआई प्रलेखन से सावधान रहें

इसके अलावा, ऑटोजेनरेटेड एपीआई प्रलेखन से सावधान रहें। अगर मुझे ऐसे डॉक्स पढ़ने का सहारा लेना पड़े, तो यह होगा क्योंकि आपका कोड पढ़ना इतना कठिन है। फिर से, कोड को सरल बनाएं और मैं इसे सीधे पढ़ सकता हूं।

टेस्ट भी डॉक्स हैं

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

अगर यह मदद करता है चित्र बनाएँ

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

"1000 फीट" का दस्तावेज़ देखें

अंत में, अपने आप को एक अवलोकन दस्तावेज़ लिखें। ऐप क्या करता है? इसे यह कैसे करना है? यह किन अन्य प्रणालियों से जुड़ता है? इस तरह बातें। हालांकि यहां कोड संरचना का वर्णन करने का प्रयास न करें। कोड को ऐसा करने दें। इस दस्तावेज़ को यह याद दिलाने दें कि आपने पहली बार कोड क्यों लिखा है।


14
मैं आपकी सभी बातों से सहमत हूं, सिवाय इसके कि टिप्पणियों में अपनी जगह है। हालांकि मैं मानता हूं कि टिप्पणियों में कोई मतलब नहीं है add 1 to i, टिप्पणियों को यह बताना चाहिए कि कोड क्यों करता है। उदाहरण के लिए, कोड if (!something.Exists()) {...}एक टिप्पणी का उपयोग कर सकता है जैसे // something exists only when (explanation of the broader scenario):।
जोनाथन

16
हम सभी ने अपनी // increment x x++;टिप्पणियों का उचित हिस्सा देखा है जो किसी काम के नहीं हैं, लेकिन बच्चे को स्नान के पानी के साथ बाहर फेंकना गलत है और घोषणा करते हैं कि टिप्पणियां हमेशा खराब होती हैं। उदाहरण के लिए, प्रपत्र की टिप्पणियां // this case should never happen because xyz throw exception "unreachable"
क्रोधित

7
बहुत अच्छी सूची है। लेकिन @ जोनाथन की तरह। मैं टिप्पणियों से सहमत नहीं हूं। हालाँकि, कुछ समय के लिए आपको थर्ड पार्टी फ्रेमवर्क में बग्स का हिसाब देना होगा। हालांकि यह अपने स्वयं के कार्य में परिलक्षित हो सकता है, फिर भी विवरण का एक सा छोड़ना अच्छा है कि वर्कअराउंड (बगनंबर या बगनेम / बग का विवरण) की आवश्यकता क्यों है।
मग्गू_

16
@DavidArno लेकिन आप ऐसा नहीं कर सकते कि एक टिप्पणी के कारण यह बताया गया कि कुछ क्यों नहीं किया गया। की तरह //XXX: Not using straight-forward method Foo here because ...। इस तरह की टिप्पणियां बेहद मूल्यवान हो सकती हैं, लेकिन स्पष्ट कारणों के लिए कोड के साथ व्यक्त करना असंभव है।
विस्फ़ोटक - मोनिका

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

5

एक कवर पत्र प्रदान करें

जब तक आप एक बहुत ही तकनीकी डोमेन में हैं, कोड के आसपास के अधिकांश प्रश्न 'कैसे' के बारे में नहीं होंगे, लेकिन 'क्यों' या 'क्या' के बारे में होंगे।

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

यहां तक ​​कि अगर लोग तकनीकी हैं, तो कवर पत्र को इस बात का मार्गदर्शन करना चाहिए कि उन्हें कुछ कहां ढूंढना चाहिए।

सरल अत्यंत न्यूनतर बिंदु:

  1. परिचय, यह कोड (आधार) क्यों मौजूद है
  2. कोड सब्मिट क्या कार्य पूरा करता है
  3. कोड कहां है (उदाहरण के लिए स्क्रिप्ट नाम)

उदाहरण

  1. स्क्रिप्ट का यह सेट StackOverflow को स्क्रैप करता है और डेनिस जहरुद्दीन के उत्तरों को बढ़ाता है
  2. ए। यह स्क्रिप्ट html को पार्स करने के लिए जिम्मेदार है, और विश्लेषण करें कि क्या यह सही उपयोगकर्ता है
  3. ए। स्क्रिप्ट यहां पाई गई है: ScrapeAndVote / RecognizeDennis.scr

1

सबसे बड़ी गति मैं आमतौर पर अलग-अलग निर्माण से प्राप्त करता हूं जो प्रत्येक एक मध्यवर्ती चरण का प्रतिनिधित्व करता है जो संकलन और काम करता है।

इसलिए यदि मुझे किसी विशिष्ट सुविधा को लागू करने के लिए किसी फ़ंक्शन में एक नया पैरामीटर शुरू करना है, तो एक ऐसी प्रतिबद्धता है जो कुछ भी नहीं करती है, लेकिन पैरामीटर को घोषणा में, परिभाषा में और सभी कॉल साइटों पर जोड़ देती है। फिर, अगला कमिट कार्यक्षमता का परिचय देता है, और तीसरा कॉल साइटों को अपडेट करता है जो नई सुविधा का उपयोग करते हैं।

यह समीक्षा करना आसान है, क्योंकि विशुद्ध रूप से यांत्रिक परिवर्तनों पर जल्दी से नज़र रखी जा सकती है, और फिर रास्ते से हट जाते हैं।

इसी तरह, यदि आप सुधार कोड, कि हमेशा एक अलग प्रतिबद्ध होना चाहिए।


1

यद्यपि मौजूदा उत्तरों में असहमति के एक या दो स्पष्ट बिंदु हैं, यदि केवल जोर देने पर, मैं सामान्य सलाह को इस तरह से संक्षेप में प्रस्तुत करने की कोशिश करूंगा जो स्पष्ट करता है कि हर कोई कहां से आ रहा है:

  1. सबसे पहले, स्वच्छ कोड लिखें; कोई अन्य "प्रलेखन" उसके बाद खुद का ख्याल रखेगा। स्वच्छ कोड पहली जगह में सीखने के लिए सिद्धांतों का एक पूरा सेट है: एकल-जिम्मेदारी कक्षाएं, लघु विधियाँ जो एक चीज़, अच्छे चर और विधि के नाम, बेहतर वर्ग / प्रकार के नामों को रूपकों पर ध्यान केंद्रित करके करती हैं (उदाहरण के लिए एक मल्टीबूटस्पॉर्टर कॉल सोडा), आवश्यकताओं, डीआरवाई, एसओएलआईडी, एक सुसंगत प्रतिमान और इतने पर इंगित करने के लिए इकाई परीक्षण।
  2. कोड से पता चलता है कि कोड कैसे काम करता है; टिप्पणियों से पता चलता है कि कोड क्यों काम करता है। उदाहरण के लिए, "+1 को एक त्रुटि से रोकता है", या "इस पाठ्यपुस्तक या वेबपेज में व्युत्पन्न" के साथ कुछ जटिल सूत्र के साथ एक +1 की व्याख्या करें।
  3. आप जो कुछ भी टिप्पणियों के साथ कर रहे हैं, ऊपर 1 बिंदु अच्छी तरह से साफ कोड में प्राप्त कर सकता है। टिप्पणियों को विफलताओं / आवश्यक बुराइयों के रूप में देखें, या यहां तक ​​कि अगर वे समय के साथ कोड के साथ सिंक से बाहर निकलते हैं तो दोनों को संपादित किया जाता है। टिप्पणियों को बुरी तरह से लिखे गए कोड की भरपाई नहीं करनी चाहिए, क्योंकि कोड की तुलना में किसी भी अधिक प्रतिभा या देखभाल के साथ टिप्पणियां क्यों लिखी जाएंगी?

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


2
"+1 को टाइपो नहीं है" या "मुझे अपने प्रोग्राम की एक भी त्रुटि का पता नहीं चल रहा है" टिप्पणी से भिन्न "टिप्पणी 1 से एक त्रुटि को रोकती है" कैसे होती है? (उपयोगी टिप्पणियाँ आम तौर पर स्रोत कोड में +1 से बड़ी चीज़ से संबंधित होती हैं, या स्रोत कोड के बाहर किसी चीज़ से।) ताकि अभी भी "इस पाठ्यपुस्तक या वेबपेज में" आपके बिंदु # 2 में एक वैध और वास्तव में महान उदाहरण के रूप में निकले। तब आपका बिंदु # 3 यह सुझाव देता है कि आप बिना किसी टिप्पणी के स्वच्छ पर्याप्त कोड का उपयोग करके "इस पाठ्यपुस्तक या वेबपेज में व्युत्पन्न" व्यक्त करने में सक्षम हो सकते हैं; वाह, मैं उस कार्रवाई में देखना चाहूंगा।
जिरका हनिका

@JirkaHanika शायद एक-के-बाद एक खराब उदाहरण थे। 3 के लिए, मेरा मतलब था "प्रत्येक हो सकता है" के बजाय "प्रत्येक हो सकता है"; तो नहीं, मुझे नहीं लगता कि अकेले कोड ऐसी चीजों को स्पष्ट कर सकता है। (ठीक है, आप एक चर नाम के रूप में गॉसियनफ्रॉम ट्राइस्टेक्स्टबुक नेमसेप्रेशन की कोशिश कर सकते हैं, लेकिन यह एक बुरा विचार है!)
JG
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.