title: Everything a Value Object in DDD
body: <p>I just read about Value Objects, being immutable and described as:</p>
  
  <blockquote>
    <p>A small simple object, like money or a date range, whose equality isn't based on identity.</p>
  </blockquote>
  
  <p>Looking at my currently existing entities I figured I could make pretty much everything that's not an entity a value object.</p>
  
  <p>Let's say I have an entity class User.</p>
  
  <pre><code>class User
  {
      public $id;
      public $firstname;
      public $lastname;
      public $email;
  }
  </code></pre>
  
  <p>I could make it consist of the value objects <code>Id</code>, <code>FirstName</code>, <code>LastName</code>, <code>Email</code> and <code>Password</code>, because none of these <code>User</code> attributes equality are based on identity, right? But then again I could probably go even further and make more VOs <code>Int</code>, <code>String</code>, <code>Name</code> (which consists of <code>FirstName</code> and <code>LastName</code> VOs), etc.</p>
  
  <p>Where do I draw he line to prevent over-engineering?</p>
  
  <p>Is it normal for a domain to contain that many VOs?</p>
  
  <p>Is my understanding of value objects even right?</p>