title: C# Class naming convention: Is it BaseClass or ClassBase or AbstractClass
body: <p>What is the recommended approach to naming base classes? Is it prefixing the type name with "<strong>Base</strong>" or "<strong>Abstract</strong>" or would we just suffix it with "Base"?</p>
  
  <p>Consider the following:</p>
  
  <p>type: <code>ViewModel</code> e.g. <em>MainViewModel</em>, <em>ReportViewModel</em></p>
  
  <p>base class: <code>BaseViewModel</code> or <code>ViewModelBase</code> or <code>AbstractViewModel</code></p>
  
  <p>Also consider:</p>
  
  <p>type: <code>Product</code> e.g. <em>VirtualProduct</em>, <em>ExpiringProduct</em></p>
  
  <p>base class: <code>BaseProduct</code> or <code>ProductBase</code> or <code>AbstractProduct</code></p>
  
  <p>Which do you think is more standard?</p>
  
  <pre><code>class Entity : EntityBase
  {
  }
  </code></pre>
  
  <p>or </p>
  
  <pre><code>class Entity : BaseEntity
  {
  }
  </code></pre>