"객체에게 묻지 말고, 시켜라."
if (cart.hasProduct(p)) {
cart.getItem(p).increaseQty();
} else {
cart.addItem(new CartItem(p));
}
cart.addProduct(p); // 내부에서 판단하고 처리
int value = obj.increase(); → 실용적이지만 SRP 위반 우려 boolean changed = obj.increaseIfPossible(); → 의도 명확, 추천 obj.increase(); int now = obj.getValue(); → 절충| 상황 | 판단 기준 |
|---|---|
| 값을 읽고 조작해야 할 때 | 가능하면 캡슐화된 행동 메서드로 통합 |
| 로직이 반복되거나 중복될 때 | 내부로 위임하여 중복 제거 |
| 상태 변경 결과가 필요할 때 | boolean 또는 명확한 리턴으로 의미 표현 |
| 리턴 타입 고민될 때 | 그 메서드의 진짜 목적이 뭔지를 보라 |
답: B. cart.addProduct(p)
답: A. int (상태를 리턴)
"TDA는 코드의 예의다.객체에게 일을 맡기고, 책임을 존중하라."