मैं एक "स्पेगेटी-कोड" प्रोजेक्ट पर काम कर रहा हूं, और जब मैं बग्स को ठीक कर रहा हूं और नई विशेषताओं को लागू कर रहा हूं, तो कोड यूनिट-टेस्ट करने योग्य बनाने के लिए मैं कुछ रीफैक्टरिंग भी करता हूं।
कोड अक्सर इतना कसकर युग्मित या जटिल होता है कि एक छोटे से बग को ठीक करने से बहुत सारी कक्षाएं फिर से लिखी जाएंगी। इसलिए मैंने उस कोड में कहीं एक रेखा खींचने का फैसला किया जहां मैं रिफैक्टिंग करना बंद कर देता हूं। इसे स्पष्ट करने के लिए, मैं स्थिति को समझाते हुए कोड में कुछ टिप्पणियां छोड़ता हूं, जैसे:
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>>>>();
यह एक अच्छा विचार है? ऐसा करते समय मुझे क्या ध्यान रखना चाहिए?