Design patterns·The named ways it goes wrong
money is a decimal, the email is a string, and the validation for both is repeated in nine call sites.
Primitive obsession
Also calledprimitive obsession smell, everything is a string
Representing domain concepts with language primitives instead of types of their own, so the rules that go with them have no home. It is the reason the same validation appears everywhere, the reason two identifiers can be swapped without complaint, and the reason a currency-free amount ends up added to another currency. Value objects and tiny types are the direct cure.