अगर कोई विधि है
bool DoStuff() {
try {
// doing stuff...
return true;
}
catch (SomeSpecificException ex) {
return false;
}
}
बल्कि यह कहा जाना चाहिए IsStuffDone()
?
दोनों नामों को उपयोगकर्ता द्वारा गलत तरीके से समझा जा सकता है: यदि नाम DoStuff()
क्यों है तो यह एक बूलियन वापस करता है? यदि नाम है तो IsStuffDone()
यह स्पष्ट नहीं है कि क्या विधि एक कार्य करती है या केवल उसका परिणाम देखती है।
क्या इस मामले के लिए एक सम्मेलन है? या एक वैकल्पिक दृष्टिकोण, क्योंकि यह एक दोषपूर्ण माना जाता है? उदाहरण के लिए, जिन भाषाओं में आउटपुट पैरामीटर होते हैं, जैसे C #, एक बूलियन स्टेटस वैरिएबल को विधि के रूप में पास किया जा सकता है और विधि का रिटर्न प्रकार होगा void
।
संपादित करें: मेरी विशेष समस्या में अपवाद को सीधे कॉल करने वाले को नहीं सौंपा जा सकता है, क्योंकि विधि एक इंटरफ़ेस कार्यान्वयन का एक हिस्सा है। इसलिए, कॉलर को विभिन्न कार्यान्वयनों के सभी अपवादों से निपटने का शुल्क नहीं दिया जा सकता है। यह उन अपवादों से परिचित नहीं है। हालाँकि, कॉल करने वाला कस्टम अपवाद से निपट सकता है, StuffHasNotBeenDoneForSomeReasonException
जैसा कि npinti के उत्तर और टिप्पणी में सुझाया गया था ।
boolean
रैपिंग के बजाय वापस आना या अपवाद को पारित करना लगभग हमेशा गलत होता है।
BadlyDesignedMethodInSeriousNeedOfRefactoring
? और अपवादों के बारे में आपके प्रश्न का उत्तर देने के लिए - मैंने या तो कॉलर को उन्हें संभालने दिया, या उन्हें पकड़ लिया और फिर एक कस्टम अपवाद फेंक दिया जिसका अर्थ है "यह विधि अपना काम नहीं करती है"। साझा करें और आनंद लें।
if (FirstMethodSucceeds(problem) or SecondMethodSucceeds(problem) or ...) Hurray(); else UniversalSolve(problem);
। (रिवाज?) अपवादों के साथ ऐसा करना बेकार में अधिक जटिल होगा।