যদি কোনও পদ্ধতি থাকে
bool DoStuff() {
try {
// doing stuff...
return true;
}
catch (SomeSpecificException ex) {
return false;
}
}
এটি বরং বলা উচিত IsStuffDone()
?
উভয় নামের ব্যবহারকারীর দ্বারা ভুল ব্যাখ্যা করা যেতে পারে: যদি নাম হয় DoStuff()
তবে এটি কেন বুলিয়ান ফিরিয়ে দেয়? নামটি থাকলে IsStuffDone()
পদ্ধতিটি কোনও কার্য সম্পাদন করে বা কেবল তার ফলাফলটি পরীক্ষা করে কিনা তা পরিষ্কার নয়।
এই মামলার জন্য কোন সম্মেলন আছে? অথবা একটি বিকল্প পদ্ধতির, যেমন এটি ত্রুটিযুক্ত হিসাবে বিবেচনা করা হয়? উদাহরণস্বরূপ, সি # এর মতো আউটপুট প্যারামিটার রয়েছে এমন ভাষাগুলিতে, একটি বুলিয়ান স্ট্যাটাস ভেরিয়েবল এক হিসাবে পদ্ধতিতে পাস হতে পারে এবং পদ্ধতির রিটার্ন টাইপ হবে void
।
সম্পাদনা: আমার বিশেষ সমস্যায় ব্যতিক্রম হ্যান্ডলিং সরাসরি কলারের কাছে অর্পণ করা যায় না, কারণ পদ্ধতিটি একটি ইন্টারফেস বাস্তবায়নের একটি অংশ। অতএব, কলারকে বিভিন্ন বাস্তবায়নের ব্যাতিক্রমগুলি বাদ দিয়ে চার্জ করা যাবে না। এটি ex ব্যতিক্রমগুলির সাথে পরিচিত নয়। যাইহোক, কলকারী একটি কাস্টম ব্যতিক্রম StuffHasNotBeenDoneForSomeReasonException
যেমন ডেকে আনতে পারে যেমন এনপিঙ্কির উত্তর এবং মন্তব্যে পরামর্শ দেওয়া হয়েছিল ।
boolean
বদলে ফিরে আসা বা ব্যতিক্রমটি পাস করা প্রায় সর্বদা ভুল।
BadlyDesignedMethodInSeriousNeedOfRefactoring
? এবং ব্যতিক্রমগুলি সম্পর্কে আপনার প্রশ্নের উত্তর দেওয়ার জন্য - আমি হয় কলকারী তাদের পরিচালনা করতে, বা তাদের ধরতে এবং তারপরে একটি কাস্টম ব্যতিক্রম ছুঁড়ে ফেলার অর্থ যার অর্থ "এই পদ্ধতিটি তার কাজ করে না"। শেয়ার করুন এবং উপভোগ করুন।
if (FirstMethodSucceeds(problem) or SecondMethodSucceeds(problem) or ...) Hurray(); else UniversalSolve(problem);
। (কাস্টম?) ব্যতিক্রমগুলি দিয়ে একই কাজ করা অযথা আরো জটিল হবে।