When modeling a domain with entities and value objects, would it make any sense to also make "basic" value types as well defined value objects?
For instance, I can have a value object EmailAddress or ProductName. But what about just String as a value object? Is it against any known principle for any good reason? What I really is wondering is if I should/could define all possible property values as value objects, including string, bool, int etc. Is that wrong or just doing it to far? Somehow I feel I would prefer really being explicit with any "thing" that is a value of some sort and not leave anything open to interpretation. What do you think? What does the gurus say about this?
A reference I stumbled on:
It's often a good idea to replace common primitives, such as strings, with appropriate value objects. While I can represent a telephone number as a string, turning into a telephone number object makes variables and parameters more explicit (with type checking when the language supports it), a natural focus for validation, and avoiding inapplicable behaviors (such as doing arithmetic on integer id numbers).