위와같이 빈 배열이나 컬렉션을 반환하는 대신 null을 반환하는 메서드를 사용하면 클라이언트쪽에서 null에 대한 처리를 아래와 같이 해줘야 한다.

만약 클라이언트에서 null에 대한 처리를 빼먹었다면 오류를 발생시킬 것이다. 그렇다면 빈 배열을 반환하는 것이 null을 리턴하는 것보다 좋은 이유는 무엇일까? "배열할당 비용을 절약할 수 있다"라고 생각할 수 있다.

하지만 해당 메서드가 성능 저하의 주범이라는 것이 밝혀지지 않는 한 그런 수준까지 걱정하는 것은 옳지 않다. 또한 길이가 0인 배열은 변경이 불가능하므로 아무 제약없이 재사용할 수 있다.


즉 위의 getCheeses메서드는 아래와 같이 변경되어야 한다.



 마찬가지로 컬렉션을 반환하는 메서드도 빈 컬렉션을 반환해야 할 때마다 동일한 변경 불가능 빈 컬렉션 객체를 반환하도록 구현할 수 있다.


요약

null대신에 빈 배열이나 빈 컬렉션을 반환하라는 것이다. 


+ Recent posts