title: Considering object encapsulation, should getters return an immutable property?
body: <p>When a getter returns a property, such as returning a <code>List</code> of other related objects, should that list and it's objects be immutable to prevent code outside of the class, changing the state of those objects, without the main parent object knowing?</p>
  
  <p>For example if a <code>Contact</code> object, has a <code>getDetails</code> getter, which returns a <code>List</code> of <code>ContactDetails</code> objects, then any code calling that getter:</p>
  
  <ol>
  <li>can remove <code>ContactDetail</code> objects from that list without the <code>Contact</code> object knowing of it.</li>
  <li>can change each <code>ContactDetail</code> object without the <code>Contact</code> object knowing of it.</li>
  </ol>
  
  <p>So what should we do here? Should we just trust the calling code and return easily mutable objects, or go the hard way and make a immutable class for each mutable class?</p>