Skip to content

Tell, Don't Ask (TDA) 원칙이란

GWANGHYEON KIM edited this page Dec 3, 2024 · 1 revision

핵심 개념

TDA 원칙이란?

  • 객체의 상태를 가져와서 결정하지 말고, 객체에게 직접 행동하도록 명령하는 원칙
  • 객체의 캡슐화를 강화하고 응집도를 높이는 설계 원칙
  • 객체의 자율성을 높이고 결합도를 낮추는데 도움

Bad Practice vs Good Practice

Bad Practice (Ask)

// 객체의 상태를 조회하여 판단
if (user.getBalance() >= order.getPrice()) {
    user.setBalance(user.getBalance() - order.getPrice());
    order.setStatus("PAID");
}

Good Practice (Tell)

// 객체에게 행동을 요청
user.pay(order);

장점

  1. 캡슐화 강화
    • 객체 내부 상태를 외부에서 직접 조작하지 않음
    • 구현 세부사항을 숨길 수 있음
  2. 응집도 향상
    • 관련된 데이터와 행동이 한 객체에 모여있음
    • 객체가 자신의 책임을 더 명확히 가짐
  3. 유지보수성 개선
    • 내부 구현 변경이 외부에 영향을 미치지 않음
    • 코드의 재사용성 증가

관련 pr

참고 자료

👥 팀 강점

🧑‍💻 개발 일지

📌 ALL

📌 FE

📌 BE

💥 트러블 슈팅

📌 FE

📌 BE

🤔 고민

📚 학습 정리

📌 김광현

📌 백지연

📌 전희선

📌 한승헌

🤝 회의록

🗒️ 데일리 스크럼

💬 팀 회고


👨‍👩‍👧‍👦 소개

🌱 문화

🔨 기술 스택

⚙️ 서비스 아키텍쳐

🚧 CI/CD

🌊 Flow

💭 6주를 보내면서

Clone this wiki locally