Iterator를 작성하는 과정에서 다음 코드를 작성하는 것을 발견했습니다 (오류 처리 중단).
public T next() {
try {
return next;
} finally {
next = fetcher.fetchNext(next);
}
}
읽는 것보다 약간 더 읽기 쉽다
public T next() {
T tmp = next;
next = fetcher.fetchNext(next);
return tmp;
}
나는 가독성의 차이가 압도적이지 않을 수있는 간단한 예라는 것을 알고 있지만 예외가없는 경우에 최종 시도를 사용하는 것이 좋지 않은지에 대한 일반적인 견해에 관심이 있습니다. 코드를 단순화 할 때 실제로 선호되는 경우
나쁜 경우 : 왜? 스타일, 성능, 함정, ...?
결론 모든 답변에 감사드립니다! 결론은 (적어도 나를 위해) 첫 번째 예제가 일반적인 패턴이라면 더 읽기 쉽지만 그렇지 않다는 결론입니다. 따라서 난독 화 된 예외 흐름과 함께 목적 이외의 구문을 사용하여 도입 된 혼란은 단순화보다 중요합니다.
Iterator
실제로 구현 하기 위해 일종의 프리 페치가 필요한 구현 에 관한 hasNext()
것입니다. 직접 해보십시오.
Iterator
는 값을 가져와야한다는 hasNext()
것입니다 next()
.
finally
블록을 거의 사용하지 않습니다 .