title: Concrete Types or Interfaces for return types?
body: <p>Today I came to a fundamental paradox of the object programming style, concrete types or interfaces.</p>
  
  <p>Whats the better election for a method's return type: a concrete type or an interface?</p>
  
  <p>In most cases, I tend to use concrete types as the return type for methods. because I believe that an concrete type is more flexible for further use and exposes more functionality.</p>
  
  <p>The dark side of this: Coupling.
  The angelic one: A concrete type contains per-se the interface you would going to return initially, and extra functionality.</p>
  
  <p>What's your thumb's rule?</p>
  
  <p>Is there any programming principle for this?</p>
  
  <hr>
  
  <p><strong>BONUS</strong>: This is an example of what I mean <a href="https://stackoverflow.com/questions/491375/readonlycollection-or-ienumerable-for-exposing-member-collections">ReadOnlyCollection or IEnumerable for exposing member collections?</a></p>