title: Java Interface, AbstractClass and Enum naming convention
body: <p>We are having this discussion in our team about code conventions for Java for:</p>
  
  <ul>
  <li><p><code>interface</code>: <code>Foo</code> or <code>IFoo</code> or <code>FooInterface</code>?</p></li>
  <li><p><code>abstract</code>: <code>Foo</code> or <code>AbstractFoo</code>?</p></li>
  <li><p><code>Enums</code>: <code>Foo</code> or <code>FooEnum</code>?</p></li>
  </ul>
  
  <p>I'm basically trying to put my personal preferences aside :) so reasons to back up one or other convention are very welcome.</p>