Tell, don’t ask

Model: Law of Demeter

Objects make their decisions based only on the information they hold internally or that which came with the triggering message; they avoid navigating to other objects to make things happen.
this style produces more flexible code because it’s easy to swap objects that play the same role.

why?

  • information hiding
  • flexible code
  • forces us to name the interactions between objects

But Sometimes Ask

“ask”
when getting information from values and collections,
or when using a factory to create new objects.
Occasionally, we also ask objects about their state
when searching or filtering

ask the question, not the information

(src: Book: Growing Object Oriented Software, Guided By Tests - Steve Freeman & Nat Pryce)