1. 예외는 오직 예외 상황에만 사용할 것
예외를 제어 흐름용으로 사용하지 말자
- 예외는 오직 예외 상황에서만 사용해야 한다.
- 일반적인 제어 흐름용으로 사용해서는 안됨
- 코드를 헷갈리게 한다(코드가 직관적이지 못하다).
- 성능 저하의 원인이 될 수 있다.
- 엉뚱한 곳에서 발생한 버그를 숨겨버릴 수 있다.
예외를 제어 흐름용으로 사용한 예시
try {
int i = 0;
while(true) { mountainList[i++].climb(); }
} catch(ArrayIndexOutOfBoundsException e) {...}
for(Mountain m : mountainList) { m.climb(); }
- 두 코드 모두
mountainList
배열의 원소를 순회하는 목적으로 쓰여졌다.
- 예외를 제어흐름용으로 사용하니 코드가 전혀 직관적이지 못하다.
- 이 작자는 코드를 왜 이렇게 짰을까?
코드를 짤 때는 꼼수를 쓰지 말자
- 표준적이고 쉽게 이해되는 관용구를 사용하라
- 성능 개선을 목적으로 과하게 머리를 쓴 기법은 자제하라.
- 꼼수로 성능이 개선되더라도 자바 플랫폼은 꾸준히 업데이트 되기 때문에 상대적인 성능 우위는 오래가지 않는다.
- 반면 꼼수에 숨겨진 미묘한 버그와 어려워진 유지보수 문제는 계속된다.
2. 상태 검사 메소드 / 옵셔널 / 특정 값
상태 의존적 메소드와 상태 검사 메소드