Şirketimin kod tabanında (.NET 3.5 uygulaması) aşağıdaki kod desenini her yerde görüyorum:
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
}
Neden Foo
yöntem yerine sadece ID almak ve Baz
kullanılmayan bir değer döndürme ve gerçek nesne bir ref veya output parametresi olması yerine bir nesne döndürmek yerine bunu yapmak etrafında kafamı sarmaya çalışıyorum .
Eksik olduğum bu kodlama stilinin gizli bir yararı var mı?
baz
varlık null
ve döndürülen bool
varlık false
vardır değil eşdeğeri. new BazObject()
asla atılmaz null
, bu yüzden atılmadan bazObject
önce güncellenmedikçe , ne zaman iade edilir asla . Eğer muazzam yardımcı olacağını Spec için kullanılabilir. Aslında, bu belki de bu kodun sergilediği en ciddi sorundur. Exception
Foo
false
baz
null
Foo