क्या टिप्पणियों को फिर से प्रसारित करने के साथ एक अच्छा विचार है?


11

मैं एक "स्पेगेटी-कोड" प्रोजेक्ट पर काम कर रहा हूं, और जब मैं बग्स को ठीक कर रहा हूं और नई विशेषताओं को लागू कर रहा हूं, तो कोड यूनिट-टेस्ट करने योग्य बनाने के लिए मैं कुछ रीफैक्टरिंग भी करता हूं।

कोड अक्सर इतना कसकर युग्मित या जटिल होता है कि एक छोटे से बग को ठीक करने से बहुत सारी कक्षाएं फिर से लिखी जाएंगी। इसलिए मैंने उस कोड में कहीं एक रेखा खींचने का फैसला किया जहां मैं रिफैक्टिंग करना बंद कर देता हूं। इसे स्पष्ट करने के लिए, मैं स्थिति को समझाते हुए कोड में कुछ टिप्पणियां छोड़ता हूं, जैसे:

class RefactoredClass {
    private SingletonClass xyz;

    // I know SingletonClass is a Singleton, so I would not need to pass it here.
    // However, I would like to get rid of it in the future, so it is passed as a
    // parameter here to make this change easier later.
    public RefactoredClass(SingletonClass xyz) {
        this.xyz = xyz;
    }
}

या, केक का एक और टुकड़ा:

// This might be a good candidate to be refactored. The structure is like:
// Version String
//    |
//    +--> ...
//    |
//    +--> ...
//          |
//    ... and so on ...    
//
Map map = new HashMap<String, Map<String, Map<String, List<String>>>>();

यह एक अच्छा विचार है? ऐसा करते समय मुझे क्या ध्यान रखना चाहिए?



3
यह एक राय-आधारित विषय है; लेकिन मेरी व्यक्तिगत राय है कि यह ठीक उसी प्रकार की टिप्पणी है जो उपयोगी है, और यह कि मैं अन्य लोगों के कोड में ढूंढूंगा: यह आपको महत्वपूर्ण जानकारी बताता है जो कोड से पहले से स्पष्ट नहीं है; नहीं क्या एक विधि है, लेकिन क्यों
किलन फ़ॉथ

2
HashMap <स्ट्रिंग, मानचित्र <स्ट्रिंग, मानचित्र <स्ट्रिंग, सूची <स्ट्रिंग >>>>: o
margabit

5
टिप्पणियाँ जो मुझे बताती हैं कि कोड का एक टुकड़ा बदबूदार क्यों दिखता है, अविश्वसनीय रूप से बहुत सराहना की जाती है। मुझे कोडबेस के बारे में आपकी समझ नहीं हो सकती है, इसलिए मैं सिर्फ एक मुद्दा देखूंगा और सोचूंगा कि "क्या बकवास है?", लेकिन एक टिप्पणी यह ​​बताते हुए कि यह ऐसा क्यों है जो मुझे कोड को तेजी से प्राप्त करने में मदद करेगा। हां, बहुत बहुत ऐसा करते हैं। (मान लें कि आप डब्ल्यूटीएफ नहीं होने के लिए कोड को ठीक नहीं कर सकते हैं!)
फ़ोशी

जवाबों:


13

क्या टिप्पणियों को फिर से प्रसारित करने के साथ एक अच्छा विचार है?

यदि आपने अपने रिफैक्टरिंग को पूरा करने के लिए समय आवंटित किया है, और यदि आप वास्तव में इसे करते हैं, तो हाँ - यह काम करेगा।

ऐसा करते समय मुझे क्या ध्यान रखना चाहिए?

आधुनिक IDEs के पास TODO लाइनों को खोजने और दिखाने का एक विकल्प है। आपको उन्हें समय-समय पर जांचना चाहिए, और जब भी आप उनकी संख्या कम करने का प्रयास कर सकते हैं।


2

मैं doxygen या javadoc के लिए एक आसान-से-स्थापित कस्टम टैग के लिए इस तरह के विचार /// @todoटिप्पणियां करूंगा , इसलिए यह एपीआई डॉक्स के टूडू अनुभाग में स्वचालित रूप से निकाला जाता है। सादे टिप्पणियों को बहुत आसानी से अनदेखा किया जाएगा और अंततः कोड की गहराई में खो जाएंगे।


[संपादित करें] BTW: क्या यह एक अच्छा विचार है:

जब मैं बग को ठीक कर रहा हूं और नई विशेषताओं को लागू कर रहा हूं, तो मैं कोड यूनिट-टेस्ट करने योग्य बनाने के लिए कुछ रीफैक्टरिंग भी करता हूं

मुझे लगता है कि (अनुभव से पता है!), Refactoring बहुत खतरनाक हो सकती है, खासकर जब तब भी कोई यूनिट परीक्षण नहीं होता है। तो आप अपने अतिरिक्त कार्य (बग्स आदि को ठीक करते समय) को टूडो टिप्पणियों को जोड़ने पर बेहतर ढंग से प्रतिबंधित करेंगे ... हम सभी जानते हैं: जब कभी भी);


प्रश्न में कोड स्निपेट जावा की तरह पढ़ता है, आप डॉक्स ऑक्सीजन की सिफारिश क्यों करते हैं?
gnat

मुझे पता था कि doxygen @todo का समर्थन करता है - javadoc के लिए मुझे यकीन नहीं था - लेकिन क्या वास्तव में भाषा इतनी महत्वपूर्ण है? मेरे दृष्टिकोण से, जावा उदाहरण ने एक गहरी समस्या को चित्रित किया।
वुल्फ

1
@gnat: क्या आपको लगता है कि यह अब बेहतर है?
वुल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.