벤캣 수브라마니암, 앤디 헌트의 애자일 프랙틱스에는 다음과 같은 이야기가 나온다.

다른 객체는 신뢰하지 마. 결국 다른 사람이 작성한 거고, 네가 했더라도 똑똑하다 할 수 없던 지난달에 작성한 거란 말이지. 다른 객체에서 필요한 정보를 얻어서, 스스로 계산하고, 스스로 결정 내려. 다른 객체에 대한 통제력을 포기하지 마!

묻지 말고 말하라는 원칙을 설명하는 부분에 앞서, 우리가 쉽게 다른 객체를 의심하며 코드를 작성하는 습관을 꼬집는 이야기이다. 한편, 알렉 샤프(Alec Sharp)는 이렇게 이야기했다.

절차적인 코드는 정보를 얻고 나서 결정을 한다. 객체지향 코드는 객체에게 행동을 하게 한다.

우리는 이웃 객체를 호출할 때 해당 객체가 무엇을 원하는지 기술하고, 호출된 객체가 그러한 바를 어떻게 실현할지 결정하게 해야 한다. 이웃 객체의 세부 내용은 우리의 책임이 아니다. 이는 다른 말로, 그리고 좀 더 형식적으로는 디미터의 법칙(Law of Demeter)으로 알려져 있다.

이런 원칙을 따르게 되면, 코드가 좀 더 유연해진다. 이는 호출자가 객체의 내부 구조나 역할 인터페이스 너머에 존재하는 시스템에 대해서 알 필요가 없기 때문이다. 객체가 세부 사항을 모른다는 것은 객체가 변경되어야 할 때 우리가 살펴봐야 하는 범위가 줄어든다는 이야기이다. 다르게 얘기하면, 우리가 객체 외부에서 그 객체와 관련된 결정을 하는 것은 객체의 캡슐화(Encapsulation)를 위반하게 되고 결국 잠재적 결함을 만들게 된다는 이야기이다.

한편 이러한 원칙은 코드의 목적을 한번에 설명할 수 있는 이름이 생기는 추가적 이점을 가져다 준다. 더불어, 관련된 코드를 한 곳에 몰아두어 의도를 드러낼 수 있기도 하다.

이와 관련하여 신문 배달 소년과 지갑이라는 재미있는 이야기도 있다. 소년이 신문 배달을 하러 왔고 비용을 2달러를 지불하라고 했다. 그러자 신문을 받아든 사람은 직접 돈을 지불하는 대신 뒤로 돌아섰고, 소년은 그 사람의 지갑을 꺼내어 2달러를 뺀 후 다시 주머니에 집어 넣었다. 그리고 소년은 반짝이는 재규어를 몰고 다닌다고 한다. 2달러를 지불하는 것은 고객의 책임이지, 소년의 책임이 아니다. 원래의 글은 아래 링크를 참조.

http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf