-
[Effective Java 2/E] 규칙43 null 대신 빈 배열이나 컬렉션을 반환하라My-Book(History) 2016. 2. 28. 20:05반응형
Cheese[] cheeses = shop.getCheeses();
if(cheeses != null && Arrays.asList(cheeses).contains(Cheese.STILTON))
System.out.println("jolly good , just the thing.");
null이 반환되지 않는다면 아래와 같이 할 수 있었을 것이다.
if(Arrays.asList(cheeses).contains(Cheese.STILTON))
System.out.println("jolly good , just the thing.");
빈 배열이나 컬렉션을 반환하는 대신 null을 반환하는 메서드를 사용하면 이런 상황을 겪게 된다.
이런 메서드는 오류를 쉽게 유발한다. 클라이언트가 null 처리를 잊어버릴 수 있기 때문.
빈 배열이나 컬렉션 대신 null을 반환하는 메서드는 구현하기도 더 까다롭다는 것!!
배열 할당 비용을 피할 수 있으니 null을 반환해야 바람직한 것 아이냐는 주장도 있을 수 있으나,
이 주장은 두가지 측면에서 틀렸다.
1) 프로파일링 결과로 해당 메서드가 성능 저하의 주범이라는 것이 밝혀지지 않은 한,
그런 수준까지 성능 걱정을 하는것은 바람직하지 않다는 것이 첫번째다.
2) 길이가 0인 배열은 변경이 불가능 하므로 아무 제약없이 재사용할 수 있다는 것이다.
반응형'My-Book(History)' 카테고리의 다른 글
좋은 코드를 작성하는 기술 - 코드의 분할 (0) 2016.04.16 [Effective Java 2/E] 규칙49 객체화된 기본 자료형 대신 기본 자료형을 이용하라 (0) 2016.02.28 [Effective Java 2/E] 규칙42 varargs는 신중히 사용하라 (0) 2016.02.28 [Effective Java 2/E] 규칙2 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라 (0) 2016.02.20 [리팩토링] 메소드 인수를 조절한다. (0) 2015.06.27