O'Reilly logo
  • Gustavo Lopez thinks this is interesting:

Each of these dependencies creates a chance that Gear will be forced to change because of a change to Wheel. Some degree of dependency between these two classes is inevitable, after all, they must collaborate, but most of the dependencies listed above are unnecessary. These unnecessary dependencies make the code less reasonable.

From

Cover of Practical Object-Oriented Design in Ruby: An Agile Primer

Note

Even they communicate w/ each other ... each class should do it's own job