null 대신 빈 컬렉션이나 배열을 반환하자

컨테이너(배열, 컬렉션)이 비었을 때 선택지는 null, 빈 컨테이너 둘 중 하나다. null을 값으로 생각하면 null을 리턴할 수도 있다. 그러나 NPE 등 고려할 것들이 많아진다. 혹자는 빈 컨테이너 생성도 리소스라고 할지 모른다. 그러나 오히려 방어 로직이 훨씬 골치아픈 일이 될 수도 있다. 결론적으로 말하면 그렇고 하나씩 따져보자.

  1. 빈 컨테이너 생성? 성능에 큰 영향이 가지 않는다. : 이 정도 리소스 할당은 전혀 문제가 되지 않는 정도의 컴퓨팅 성능을 보인다.
  2. 빈 컨테이너를 그냥 반환하면 된다. : 빈 컨테이너를 확인하고 null을 반환하는 것보다 훨씬 간편하고 의미적으로도 맞다.
  3. 정말로 신경쓰이면 : Collection.emptyList(), Collection.emptyMap(), Collection.emptySet()을 반환하는 방법이 있다. 배열도 new int[0]을 반환하면 된다.