8장_아이템54 - ririkat/effective-java GitHub Wiki
null을 반환하게 되면, 클라이언트가 null을 처리하는 방어 코드를 추가로 작성해야 한다.
- 오류 발생 가능성 높아짐
- 코드가 복잡해짐 따라서, null보다는 빈 컬렉션이나 배열을 반환하라.
빈 컨테이너를 반환하는 것은 할당 비용이 드니 null을 반환하는 쪽이 낫다는 주장도 있지만
- 대부분의 경우 성능 차이가 신경쓸 수준이 못 됨
- 새로 할당하지 않고도 빈 컬렉션과 배열 반환 가능 위의 이유로 크게 신경쓰지 않아도 된다.
가능성은 작지만, 사용 패턴에 따라 성능이 크게 저하되는 경우도 있다. 그 해법은 아래와 같다.
매번 똑같은 빈 불변 컬렉션을 반환하라.
- 빈 불변 컬렉션 반환 방법
Collections.emptyList();
Collections.emptySet();
Collections.emptyMap();
- 빈 불변 배열 반환 방법
private static final Chees[] EMPTY_CHEESE_ARRAY = new Cheese[0]; // 미리 할당하여 사용하기
// 1. 반환 시점에 빈 배열 반환
return new Cheese[0];
// 2. 미리 할당한 빈 불변 배열 반환
return EMPTY_CHEESE_ARRAY;