title: How to organize Interfaces/classes/implementations in the project
body: <p>I found some questions about how to organise projects (namespace, one class per file etc), but on a more specific note, how do you organize "things" that are very tightly related ?</p>
  
  <p>I usually end up with :</p>
  
  <ul>
  <li>an <strong>interface</strong> <code>IMyStuff</code></li>
  <li>a <strong>base (sometimes abstract) class</strong> that provides basic skeletton for that interface : <code>BaseMyStuff</code></li>
  <li><strong>implementation classes</strong> <code>MyStuffWithBellsAndWhistles</code>,  <code>MyStuffWithChocolateFlavours</code></li>
  </ul>
  
  <p>It seems to make sense that they should be in the same namespace, but it feels like my folders start to be a bit over-crowded if I put all these files together in the same folder (not actually a real problem, but it feels strange).</p>
  
  <p><strong>Would it be OK to define both the interface and the base class in the same file ?</strong></p>
  
  <p>Or <strong>would it be OK to group those things in sub-folders, but in the same namespace</strong> ? like this : </p>
  
  <pre><code>-MyNamespace
   |-Interfaces
     | -IMyStuff
     | -IMyOtherStuff
   |-BaseClasses
     | -BaseMyStuff
     | -BaseMyOtherStuff
   |-Implementation
     | -MyStuffWithAwesomeBehaviour
     | -MyStuffWithGreatUsefulness
     | -MyOtherStuffSoNeatYouWillCry
  </code></pre>
  
  <p><strong>What are the "best practices" regarding this kind of organization ?</strong></p>