예시) 사용하면 안되는 코드
private final List<Cheese> cheesesInStock = ...;
public List<Cheese> getCheeses() {
return cheesesInStock.isEmtpy() ? null : new ArrayList<>(cheesesInStock);
}
- 매장 안의 모든 치즈 목록 반환, 재고가 없다면 null 반환.
- null을 반환한다면, 클라이언트는 이 null을 처리하는 코드를 추가로 작성해야 함.
- 코드가 복잡해진다.
List<Cheese> cheeses = shop.getCheeses();
if (cheeses != null && cheeses.contains(Cheese.M\\\\ozzarell
...
}
- 값을 반은 후 null값 체크를 다시 해주어야 함
절대 null을 반환하지 말고 길이가 0인 배열을 반환하라.
- 길이 0짜리 배열을 미리 선언해두고 매번 그 배열을 반환하면 된다. 길이 0인 배열은 모두 불변이기 때문이다.
private static final Cheese[] EMTPY_CHEESE_ARRAY = new Cheese[0];
public Cheese[] getCheeses() {
return cheesesInStock.toArray(EMTPY_CHEESE_ARRAY);
}
'공부 > 이펙티브자바' 카테고리의 다른 글
[이펙티브 자바 3판] 아이템 28. 배열보다는 리스트를 사용하라 (0) | 2022.10.31 |
---|---|
14. Comparable을 구현할지 고려하라 (0) | 2022.03.18 |
12. toString을 항상 재정의하라 (0) | 2022.03.18 |
5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하기 (0) | 2022.03.18 |
64. 객체는 인터페이스를 사용해 참조하라 (0) | 2022.03.17 |
댓글