एक Iterator लिखने के भाग के रूप में, मैंने खुद को निम्नलिखित कोड ऑफ कोड (स्ट्रिपिंग एरर हैंडलिंग) लिखा है।
public T next() {
try {
return next;
} finally {
next = fetcher.fetchNext(next);
}
}
पढ़ने में थोड़ा आसान लगता है
public T next() {
T tmp = next;
next = fetcher.fetchNext(next);
return tmp;
}
मुझे पता है कि यह एक सरल उदाहरण है, जहां पठनीयता में अंतर इतना भारी नहीं हो सकता है, लेकिन मैं आम राय में रुचि रखता हूं कि क्या इस तरह के मामलों में कोशिश-अंत का उपयोग करना बुरा है, जहां कोई अपवाद शामिल नहीं हैं, या यदि यह वास्तव में पसंद किया जाता है जब यह कोड को सरल करता है।
अगर यह बुरा है: क्यों? शैली, प्रदर्शन, नुकसान, ...?
निष्कर्ष आपके सभी उत्तर के लिए धन्यवाद! मुझे लगता है कि निष्कर्ष (कम से कम मेरे लिए) यह है कि पहला उदाहरण अधिक पठनीय हो सकता है यदि यह एक सामान्य पैटर्न था, लेकिन यह नहीं है। इसलिए यह उद्देश्य के बाहर एक निर्माण का उपयोग करके शुरू की गई भ्रम के साथ, संभवतः अपवादित अपवाद प्रवाह के साथ, किसी भी सरलीकरण से आगे निकल जाएगा।
Iterator
, जहाँ आपको hasNext()
काम करने के लिए वास्तव में पूर्व-निर्धारण की आवश्यकता होती है । यह अपने आप का प्रयास करें।
Iterator
है कि आपको मूल्य प्राप्त करने की आवश्यकता है hasNext()
('क्योंकि यह मौजूद है, तो यह पता लगाने का एकमात्र तरीका है कि यह मौजूद है या नहीं) और इसे next()
ओपी की तरह ही वापस कर दें ।
finally
ब्लॉक का उपयोग करता हूं ।