intermediate
Value objects
Представляйте immutable values через attributes, чтобы validation, equality, units и formatting rules оставались рядом с concept.
Value objects представляют концепты, определяемые только атрибутами — money, email, date ranges — с immutable equality и colocated validation. Убирают primitive obsession и усложняют illegal states. Замена value — новый экземпляр, не мутация полей.
На интервью: stringly typed поля в value objects. Validation, rounding для money, serialization на границах.
Типовые ошибки: mutable value objects; VO тайно ходят в БД; VO на каждое string поле без доменного смысла.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Immutable после создания.
- Equality по всем значимым атрибутам.
- Validation при создании.
- Примитивы только на persistence или API edges.