반응형
매개변수가 유효한지 검사하자
오류는 가능한 빨리 잡아내는 것이 좋다.
초반에 오류를 잡아내지 못한 상태로 코드가 수행되면 오류의 발생 지점을 점점 찾기 어려워지기 때문이다.
매개변수를 검사하는 예시
public BigInteger mod(BigInteger m) {
if (m.signum() <= 0) {
throw new ArithmeticException("m은 양수여야 합니다.");
}
...
}
- m이 0보다 작거나 같으면 ArithmeticException 예외 발생
- m이 null이면 NullPointerException 예외 발생
위 ArithmeticException 처럼 메서드에 정의되어 있지 않은데도 NPE 예외가 발생되는 이유는 BigInteger 클래스 수준에서 기술되어 있기 때문이다.
java.util.Objects.requireNonNull 메서드
null을 수동으로 검사하지않고 유연하고 편하게 검사하는 방법
this.strategy = Objects.requireNonNull(strategy, "전략");
requireNonNull은 null이 아닌 경우 입력을 그대로 반환하므로 순수한 null 검사 목적으로만 사용 가능하다.
null이 아닌, 빈 컬렉션이나 배열을 반환하자
빈 컨테이너를 할당하는 데 비용이 들기 때문에 null을 반환하는게 낫지 않을까?
- 빈 컨테이너를 할당하는 것이나 null을 반환하는 것이나 성능 차이가 미미하다.
- 빈 컬렉션과 배열은 새로 할당하지 않아도 반환가능하다.
- 컬렉션이 비어있을 때 null을 반환한게 되면, 이 null 상황을 처리하고자 코드를 추가적으로 작성(오류 처리 고드)해주어야 한다.
반응형
'Reading Book > 이펙티브 자바' 카테고리의 다른 글
[이펙티브 자바] 자바 프로그래밍 원칙 (0) | 2022.12.12 |
---|---|
[이펙티브 자바] Enum과 EnumMap (0) | 2022.12.12 |
[이펙티브 자바] 클래스와 인터페이스를 유연하게 만드는 방법 (0) | 2022.12.12 |
[이펙티브 자바] Object 메소드 관련 규약 + Comparable (0) | 2022.12.12 |
[이펙티브 자바] try-finally 보다 try-with-resources 사용하자 (0) | 2022.12.12 |