मुझे समझ नहीं आता, जहां इस "लेबल का उपयोग नहीं करते" नियम से आता है। गैर-तुच्छ लूपिंग तर्क करते समय, ब्रेक या जारी रखने का परीक्षण आसपास के ब्लॉक के अंत में हमेशा साफ नहीं होता है।
outer_loop:
for (...) {
// some code
for (...) {
// some code
if (...)
continue outer_loop;
// more code
}
// more code
}
हां, इस तरह के मामले हर समय होते हैं। लोग क्या सुझाव दे रहे हैं कि मैं इसके बजाय उपयोग करता हूं? इस तरह एक बुलियन की स्थिति?
for (...) {
// some code
boolean continueOuterLoop = false;
for (...) {
// some code
if (...) {
continueOuterLoop = true;
break;
}
// more code
}
if (continueOuterLoop)
continue;
// more code
}
यक! यह Refactoring के रूप में एक विधि है कि कम नहीं है या तो:
boolean innerLoop (...) {
for (...) {
// some code
if (...) {
return true;
}
// more code
}
return false;
}
for (...) {
// some code
if (innerLoop(...))
continue;
// more code
}
ज़रूर यह एक छोटे खूबसूरत है, लेकिन यह अभी भी एक ज़रूरत से ज़्यादा बूलियन के आसपास गुजर रहा है। और यदि आंतरिक पाश स्थानीय चर संशोधित करता है, तो इसे विधि में पुन: सक्रिय करना हमेशा सही समाधान नहीं होता है।
तो आप सभी लेबल के खिलाफ क्यों हैं? मुझे उपरोक्त मामले के लिए कुछ ठोस कारण, और व्यावहारिक विकल्प दें।
स्रोत
2008-08-19 09:46:52
* चार साल बाद अद्यतन: * स्काला और Clojure जिसमें सलाह लेबल का उपयोग नहीं करने के लिए अच्छे कारण के लिए मान्य है की तरह कार्यात्मक भाषाओं की दिशा में एक वृद्धि की प्रवृत्ति नहीं है। लेकिन सामान्य जावा के लिए, ऊपर मेरा जवाब अभी भी खड़ा है। –
और जावास्क्रिप्ट के साथ-साथ किसी भी घटना आधारित भाषा। इस प्रकार सेम के लिए यह इतना उपयोगी नहीं हो सकता है, जब तक कि यह कुछ बहुत (शायद भी) लंबी घटना प्रबंधन का हिस्सा नहीं था। – Cheruvim
उत्सुक है कि शीर्ष वोट वाले उत्तर मूल प्रश्न का उत्तर नहीं देते हैं। ("* मैं सोच रहा था कि लेबल के लिए आम सम्मेलन क्या था। सभी कैप्स? पहली टोपी? *") – Jonik