আমি আমার সংস্থার কোডবাসে (.NET 3.5 অ্যাপ্লিকেশন) সমস্ত জায়গায় নীচের কোড প্যাটার্নটি দেখতে পাচ্ছি:
bool Foo(int barID, out Baz bazObject) {
try {
// do stuff
bazObject = someResponseObject;
return true;
}
catch (Exception ex) {
// log error
return false;
}
}
// calling code
BazObject baz = new BazObject();
fooObject.Foo(barID, out baz);
if (baz != null) {
// do stuff with baz
}
আমি আমার মাথাটি চারপাশে মোড়ানোর চেষ্টা করছি কেন আপনি Fooপদ্ধতিটি ব্যবহার না করে কেবল আইডি নেবেন এবং কোনও Bazঅবজেক্ট ফিরিয়ে দেবেন না, পরিবর্তিত কোনও মান ব্যবহার করা হয়নি যা আসল বস্তুটিকে রেফ বা আউটপুট পরামিতি হিসাবে রাখবে।
এই কোডিং শৈলীর কোনও গোপন সুবিধা রয়েছে যা আমি মিস করছি?
bazহচ্ছে nullএবং ফিরে boolহচ্ছে falseহয় না সমতুল্য। new BazObject()না হয় nullতাই যদি না, bazObjectআগে আপডেট করা হয় Exceptionফেলে দেওয়া হয় Fooযখন, falseফিরিয়ে দেওয়া হয় bazহবে না null। এটা তোলে এইসা সাহায্য করবে বৈশিষ্ট জন্য Fooউপলব্ধ ছিল। আসলে, এই কোডটি প্রদর্শিত সম্ভবত এটি সবচেয়ে গুরুতর সমস্যা।