title: Is it good practice for every public method to be covered by an interface?
body: <p>It's good practice for a class' implementation to be defined by interfaces. If a class has any public methods that aren't covered by any interfaces then they have the potential to leak their implementation.</p>
  
  <p>E.g. if class <code>Foo</code> has methods <code>bar()</code> and <code>baz()</code> but only <code>bar()</code> is covered by an interface then any use of <code>baz()</code> doesn't use an interface.</p>
  
  <p>It feels like to get cleaner code it would make sense to either:</p>
  
  <ul>
  <li>create extra interfaces if the class has to have those methods (eg a separate interface to cover the behavior of <code>baz()</code> above)</li>
  <li>or ideally refactor (eg using more composition) so the class doesn't need to have so many methods (put <code>baz()</code> in another class)</li>
  </ul>
  
  <p>Having methods not covered by an interface feels like a code smell. Or am I being unrealistic?</p>