회사 코드베이스 (.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
}
사용하지 않는 값을 반환하고 실제 객체를 ref 또는 출력 매개 변수로 사용하는 대신 Foo
메소드가 단순히 ID를 가져 와서 Baz
객체를 반환하는 대신 왜이 작업을 수행 해야하는지에 대해 머리를 감싸려고합니다 .
이 코딩 스타일에 숨겨진 이점이 있습니까?
baz
인 null
및 반환 된 bool
존재가 false
되어 있지 상응. new BazObject()
결코 null
그렇게하지 않는 한, bazObject
가 이전에 업데이트됩니다 Exception
에 슬로우되는 Foo
경우, false
반환되는 baz
수 없을 것입니다 null
. 에 대한 사양 을 Foo
사용할 수 있다면 크게 도움이 될 것 입니다. 실제로 이것은 아마도이 코드에서 가장 심각한 문제 일 것입니다.