আমি আমার সংস্থার কোডবাসে (.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
উপলব্ধ ছিল। আসলে, এই কোডটি প্রদর্শিত সম্ভবত এটি সবচেয়ে গুরুতর সমস্যা।