[250423] TDA (Tell, Don't Ask) 실전 설계 감각 요약

트라이캐치·2025년 4월 23일

출퇴근미니스터디

목록 보기
13/23
post-thumbnail

✅ 핵심 원칙 요약

"객체에게 묻지 말고, 시켜라."

  • 객체의 내부 상태를 꺼내서 조작하지 말고
  • 객체에게 명령하고, 그 객체가 내부적으로 판단하고 처리하도록 만들 것

✅ 위반 사례 vs 준수 사례

❌ TDA 위반

if (cart.hasProduct(p)) {
    cart.getItem(p).increaseQty();
} else {
    cart.addItem(new CartItem(p));
}

✅ TDA 준수

cart.addProduct(p);  // 내부에서 판단하고 처리

✅ 실전에서 흔히 생기는 고민

Q: 값도 필요하고, 변경도 해야 할 땐?

  • int value = obj.increase(); → 실용적이지만 SRP 위반 우려
  • boolean changed = obj.increaseIfPossible(); → 의도 명확, 추천
  • 또는:
    obj.increase(); int now = obj.getValue(); → 절충

✅ 오늘 배운 핵심 감각들

상황판단 기준
값을 읽고 조작해야 할 때가능하면 캡슐화된 행동 메서드로 통합
로직이 반복되거나 중복될 때내부로 위임하여 중복 제거
상태 변경 결과가 필요할 때boolean 또는 명확한 리턴으로 의미 표현
리턴 타입 고민될 때그 메서드의 진짜 목적이 뭔지를 보라

✅ 퀴즈 리뷰

Q1: 가장 TDA를 잘 지킨 방식은?

답: B. cart.addProduct(p)

Q2: 조회수 증가 메서드의 리턴타입은?

답: A. int (상태를 리턴)


🧠 티쳐 한 줄 총평

"TDA는 코드의 예의다.객체에게 일을 맡기고, 책임을 존중하라."

0개의 댓글