आप एक्स, वाई, जेड, क्ष बारे में कुछ मान्यताओं बना सकते हैं? ईजी उनमें से सिर्फ एक सच हो सकता है। की तुलना में आप एक राज्य
enum State {
X{
void doSomething(){
doItTheXWay();
}
},
Y{
void doSomething(){
doItTheYWay();
}
},
Z{
void doSomething(){
doItTheZWay();
}
},
Q{
void doSomething(){
doItTheQWay();
}
};
void doSomething(){
}
}
के रूप में और अपने कोड में देख सकते हैं, जहां आप इस्तेमाल किया बयानों
आप एक राज्य आवंटित और बस सकता है सही बात
State state = getAState();
state.doSomething();
करते हैं मामले में आप enums पसंद नहीं है राज्य एक इंटरफ़ेस हो सकता है और क्यू एक्स क्यू कक्षाओं को कार्यान्वित किया जा सकता है। यदि इस मामले में निर्माण होता है तो इस मामले में लाभ एक ही उपयोग में होते हैं। कुछ codelines बाद में आप
if(x)
do_the_next_thing_with_X();
...
साथ शुरू होगा कहें या आप बस एक और समारोह के साथ अपने enum का विस्तार करने और एक ही कॉल
state.doTheNextThing();
@Thirler हम्म बनाने के लिए, कि शॉर्ट सर्किट का उद्देश्य विफल हो जाएगा सकता है मूल्यांकन। मुझे लगता है कि एक्स, वाई, जेड, और क्यू की समान संभावना और समय-जटिलता मानते हुए यह एक प्रदर्शन बढ़ावा होगा। लेकिन क्या होगा यदि ज़ेड की संभावना 50% है और कम प्रोसेसिंग लेती है जबकि क्यू की संभावना 1% है और इसमें प्रसंस्करण शक्ति का 9 5% हिस्सा लगता है? देखें कि उचित मेट्रिक्स के बिना माइक्रो-ऑप्टिमाइज़ेशन आपको परेशानी में कैसे ला सकता है? –
हाँ, हमें सबसे अधिक वैरिएबल पर उपयोग करने की आवश्यकता है ताकि – Halo
@Tim आपको प्रदर्शन की नाली होने के लिए बहुत लंबी स्थितियों (या कोड को लाखों बार निष्पादित किया गया हो) की आवश्यकता हो।मैं निश्चित रूप से अनुकूलन नहीं कर रहा हूं (सवाल इसके बारे में बात नहीं करता है), मैं रखरखाव में सुधार करने का सुझाव दे रहा हूं। यदि प्रदर्शन महत्वपूर्ण है तो आपको गणना के परिणाम को पारदर्शी रूप से बफर करना होगा (परिणाम को संग्रहीत करने वाले फ़ंक्शन के पीछे इसे छुपाएं)। ध्यान दें कि दिया गया उदाहरण कुछ शर्तों को दो बार निष्पादित करता है। लेकिन एक अच्छा नियम तब तक अनुकूलन नहीं करना है जब तक आप यह न देख सकें कि इसे निष्पादित करने में काफी समय लगता है। – Thirler