मैंने काम पर हमारी विरासत प्रणाली में इसे बहुत देखा है - ऐसे कार्य जो इस तरह से चलते हैं:
bool todo = false;
if(cond1)
{
... // lots of code here
if(cond2)
todo = true;
... // some other code here
}
if(todo)
{
...
}
दूसरे शब्दों में, फ़ंक्शन के दो भाग हैं। पहला भाग कुछ प्रकार की प्रसंस्करण (संभावित रूप से लूप, साइड इफेक्ट्स आदि) करता है, और जिस तरह से यह "टूडू" झंडे को सेट कर सकता है। दूसरा भाग केवल तब निष्पादित किया जाता है जब "टूडू" ध्वज सेट किया गया हो।
यह चीजों को करने के लिए एक बहुत ही बदसूरत तरीका लगता है, और मुझे लगता है कि अधिकांश मामलों में जो मैंने वास्तव में समझने के लिए समय लिया है, ध्वज का उपयोग करने से बचने के लिए फिर से शुरू किया जा सकता है। लेकिन क्या यह एक वास्तविक प्रतिमान, एक बुरा विचार या पूरी तरह से स्वीकार्य है?
पहला स्पष्ट रीफैक्टराइज़ेशन इसे दो तरीकों से काटना होगा। हालाँकि, मेरा प्रश्न इस बारे में अधिक है कि क्या स्थानीय ध्वज चर बनाने के लिए (आधुनिक ओओ भाषा में) कभी कोई आवश्यकता होती है, संभावित रूप से इसे कई स्थानों पर सेट किया जाता है, और फिर बाद में यह तय करने के लिए कि कोड के अगले ब्लॉक को निष्पादित करना है या नहीं।
["blacklisted-domain","suspicious-characters","too-long"]
जो दिखाता है कि कई कारण लागू होते हैं।