[Object] 묻지 말고 시켜라(Tell, Don’t Ask)

업데이트:

메시지 전송자는 메시지 수신자의 상태를 기반으로 결정을 내린 후 메시지 수신자의 상태를 바꿔서는 안 된다. 객체의 외부에서 해당 객체의 상태를 기반으로 결정을 내리는 것은 객체의 캡슐화를 위반한다.

절차적인 코드는 정보를 얻은 후에 결정한다. 객체지향 코드는 객체에게 그것을 하도록 시킨다.

묻지 말고 시켜라 원칙을 따르면

  • 밀접하게 연관된 정보와 행동을 함께 가지는 객체를 만들 수 있다.
  • 객체의 정보를 이용하는 행동을 객체의 외부가 아닌 내부에 위치시키기 때문에 자연스럽게 정보와 행동을 동일한 클래스 안에 두게 된다.
  • 보다 자연스럽게 정보 전문가에게 책임을 할당하게 되고 높은 응집도를 가진 클래스를 얻을 확율이 높아진다.

휼륭한 인터페이스를 수확하기 위해서는 객체가 어떻게 작업을 수행하는지를 노출해서는 안 된다. 인터페이스는 객체가 어떻게 하는지가 아니라 무엇을 해야하는지를 서술해야 한다.

Reference

오브젝트, 코드로 이해하는 객체지향 설계

카테고리:

업데이트:

댓글남기기