Public and Private interfaces

Sandi Metz in “Practical Object-Oriented Design in Ruby” has a great bullet list on what our methods communicate in our code.

Public interfaces

  • expected to be invoked by others
  • are safe for others to depend on
  • have tests
  • reveal primary responsibility

Private interfaces

  • handle implementation details
  • can change for some reason
  • aren’t safe for others to depend on
  • aren’t expected to be send by other objects