그것은 실제로 냄새가 나는 것처럼 보이며 더 많은 맥락을 보지 않으면 확실히 말할 수 없습니다. 두 가지 방법이 있지만 두 가지 이유가있을 수 있습니다.
첫째, 부분 변환을 구현하거나 변환이 실패 할 경우 결과를 기본값으로 유지하는 간결한 방법입니다. 즉, 당신은 이것을 가질 수 있습니다 :
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
물론 일반적으로 예외를 사용하여 처리됩니다. 그러나 어떤 이유로 든 예외를 피해야하는 경우에도 TryParse 패턴 이 하나의 옵션 인 더 좋은 방법이 있습니다.
또 다른 이유는 순전히 일관성있는 이유 일 수 있기 때문입니다. 예를 들어이 메소드는 어떤 이유로 든 모든 변환 함수 (예 : 다중 출력을 갖는 다른 변환 함수)에 사용되는 공용 API의 일부입니다.
Java는 여러 출력을 처리하는 데별로 좋지 않습니다. 일부 언어와 같은 출력 전용 매개 변수를 사용하거나 다른 언어와 같은 여러 반환 값을 가질 수는 없지만 여전히 반환 객체를 사용할 수 있습니다.
일관성 이유는 다소 절충 적이지만 슬프게도 가장 일반적 일 수 있습니다.
- 직장 또는 코드베이스의 스타일 경찰은 Java 이외의 배경에서 왔으며 변경하기를 꺼려했습니다.
- 귀하의 코드는이 스타일이 더 관용적 인 언어의 포트 일 수 있습니다.
- 조직은 여러 언어에 걸쳐 API 일관성을 유지해야 할 수 있으며 이는 가장 낮은 공통 분모 스타일입니다 (불분명하지만 Google에서도 발생합니다 ).
- 또는 스타일이 먼 과거에 더 의미가 있었고 현재 형식으로 변형되었습니다 (예 : TryParse 패턴 일 수는 있지만 의도가 좋은 전임자는 아무도 그것을 확인하지 않은 것을 발견 한 후 반환 값을 제거했습니다).