On the Hackernoon site Nicolò Pignatelli wrote a good guide on how to write Value objects in a good way.
This is the list you must always check it against:
- it is immutable and no setters defined;
- it reflects the semantics of the domain;
- it shows how information flows and is transformed during runtime;
- it hasn’t default or useless getter methods;
- it can be compared to other Value Objects of the - - same class by reading private properties directly