위와같이 빈 배열이나 컬렉션을 반환하는 대신 null을 반환하는 메서드를 사용하면 클라이언트쪽에서 null에 대한 처리를 아래와 같이 해줘야 한다.
만약 클라이언트에서 null에 대한 처리를 빼먹었다면 오류를 발생시킬 것이다. 그렇다면 빈 배열을 반환하는 것이 null을 리턴하는 것보다 좋은 이유는 무엇일까? "배열할당 비용을 절약할 수 있다"라고 생각할 수 있다.
하지만 해당 메서드가 성능 저하의 주범이라는 것이 밝혀지지 않는 한 그런 수준까지 걱정하는 것은 옳지 않다. 또한 길이가 0인 배열은 변경이 불가능하므로 아무 제약없이 재사용할 수 있다.
즉 위의 getCheeses메서드는 아래와 같이 변경되어야 한다.
마찬가지로 컬렉션을 반환하는 메서드도 빈 컬렉션을 반환해야 할 때마다 동일한 변경 불가능 빈 컬렉션 객체를 반환하도록 구현할 수 있다.
요약
null대신에 빈 배열이나 빈 컬렉션을 반환하라는 것이다.
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[일반적인 프로그래밍 원칙들]규칙45. 지역 변수의 유효범위를 최소화하라 (0) | 2017.05.05 |
---|---|
[메서드]규칙44. 모든 API 요소에 문서화 주석을 달라 (0) | 2017.05.05 |
[메서드]규칙42. varargs는 신중히 사용하라 (0) | 2017.05.04 |
[메서드]규칙41. 오버로딩할 때는 주의해라 (0) | 2017.05.04 |
[메서드]규칙40. 메서드 시그너처는 신중하게 설계하라 (0) | 2017.05.04 |