मैंने लोगों को सलाह दी है कि किसी को हमेशा अपवाद फेंकने के बजाय Iterator pattern का उपयोग करना चाहिए (यह Python iterators में किया गया है) या Sentinel pattern का उपयोग करके, जिससे एक विशेष, सेंटीनेल मान (अक्सर null
) वापस कर दिया जाता है पुनरावृत्ति के अंत का संकेत मिलता है।क्या जावा में सेंटीनेल पैटर्न से बचने का कोई कारण है?
क्या सर्वोत्तम अभ्यास सेंटीनेल पैटर्न के खिलाफ सलाह देता है? यदि हां, तो क्यों? (इसके अलावा जावा 1.5 में foreach
वाक्यविन्यास के साथ काम नहीं कर रहा है)।
संपादित करें: कोड उदाहरण 1 - प्रहरी पैटर्न
Reader r = ...;
for(int val = r.read(); val != -1; val = r.read()) {
doSomethingWith(val);
}
कोड उदाहरण 2 - इटरेटर पैटर्न
for(Iterator<Thing> it = getAnIterator() ; it.hasNext();) {
Thing t = it.next();
doSomethingWith(t);
}
आप जो तीन लूप पैटर्न पूछ रहे हैं उनमें से प्रत्येक का उदाहरण दिखाना चाहेंगे। –
में पायथन रास्ता शामिल नहीं था, नियंत्रण प्रवाह के लिए अपवाद उठाना कुछ ऐसा नहीं है जिसे मैं गंभीरता से सुझाव दे रहा हूं। –
+1 सिर्फ लूप के लिए i/o के लिए - मैंने कभी ऐसा नहीं देखा है। –