예시) 사용하면 안되는 코드
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);
}
댓글