어떤 메서드든 'null'을 반환하게 만들지 마라.

null이 아닌, 빈 배열이나 컬렉션을 반환하라. null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다.

예시

부적절한 코드

private final List<Cheese> cheesInStock = ...;

public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheeseInStock);
}

위 코드는 빈 컬렉션일 때에 null을 반환한다. null을 반환하게 되면 불편한 점들이 많이 생기기 때문에 부적절한 코드이다.

적절한 코드

private final List<Cheese> cheesInStock = ...;

public List<Cheese> getCheeses() {
    return new ArrayList<>(cheeseInStock);
}

빈 컬렉션이나 빈 배열을 반환할 때엥, 절대 null을 반환하지 말고 길이가 0인 배열을 반환하라. 보통을 단순히 정확한 길이의 배열을 반환하기만 하면 된다. 그 길이가 0일 수도 있을 뿐이다.

References