DDD funciona mejor cuando se aplica con criterio. Usarlo como una lista de patrones puede producir mas complejidad que claridad.
Antes de crear carpetas, entiende:
- Que problema resuelve el sistema.
- Que palabras usa negocio.
- Que reglas son criticas.
- Que excepciones existen.
- Que decisiones cambian a menudo.
Evita entidades sin comportamiento.
Mal:
order.status = confirmedMejor:
order.confirm()El metodo puede validar invariantes.
Sustituye valores ambiguos:
string email
number amount
string currencyPor conceptos:
EmailAddress
Money
CurrencyNo todo necesita:
- Factory.
- Specification.
- Domain service.
- Repository.
- Event.
Usa patrones cuando resuelvan un problema real.
No dejes que DTOs, ORMs o eventos externos definan tu dominio interno.
- El codigo usa lenguaje del negocio.
- Las reglas viven en el dominio.
- Los agregados son pequenos y consistentes.
- Los contextos tienen limites explicitos.
- Las integraciones no filtran modelos internos.
- Los tests describen reglas de negocio.