मैं इसे आप क्या कर रहे के बारे में अधिक निर्भर करता है लगता है।
यह एक साधारण उदाहरण है, लेकिन एक नियम के रूप में यदि कोई शर्त है कि मैं अन्य लूप तर्क से "निकालने" कर रहा हूं, तो मैं इसे जटिलता में जोड़ने के बजाय जितनी जल्दी हो सके इसे बाहर खींचूंगा भविष्य अगर बयान (अपना पहला उदाहरण है अगर यह एक शर्त है कि भविष्य तर्क को सरल बनाने निकाला जा सकता है है) उदाहरण के लिए:
for (int i = 0 ; i < n ; i++)
{
if(obj[i] != null && obj[i].instanceOf("A")) {
doSomething();
} else if(obj[i] != null && obj[i].instanceOf("B"){
doSomethingElse();
}
}
अब यह स्पष्ट है कि
if(obj[i] == null) {
continue;
}
में पहली शर्त निकालने कुछ भ्रम की स्थिति को बचा सकता है क्योंकि यह पाश बढ़ाया जाता है। मैं इस रणनीति का उपयोग विधि पैरामीटर के परीक्षण के लिए बहुत अधिक करता हूं और या तो जल्दी लौट रहा हूं या अपवाद फेंक रहा हूं।
इसके अलावा (यह पूरी तरह से एक तरफ है, जवाब का हिस्सा नहीं है!), मैं कहूंगा कि यदि आप कभी भी "सचमुच" संतुलित स्थिति देखते हैं तो आप अपने ओओ डिजाइन को गंभीर विचार दे सकते हैं। यदि DoSomething और someOtherCondition कि समान थे, वे शायद एक विधि एक आधार वर्ग या इंटरफ़ेस में परिभाषित के विभिन्न कार्यान्वयन होना चाहिए इस कोड के लिए अग्रणी,:
for (int i = 0 ; i < n ; i++)
{
obj[i].doSomething();
}
स्रोत
2012-01-17 19:21:40
सुंदर यकीन है कि संकलक दोनों को अनुकूलित करेंगे और वे एक ही होगा प्रदर्शन। – talnicolas
आप पाएंगे कि उत्तर एक गैर-तुच्छ कोड के लिए काफी भिन्न होंगे। यह वास्तव में इस बात पर निर्भर करता है कि लूप में कितना कोड है, और वास्तव में यह क्या करता है। –
यदि 'if' खंड छोटा है और' else' खंड लंबा है, तो मैं पहले फॉर्म का उपयोग करूंगा। –