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.