核心问题
业务规则应该住在哪里?
工程困境
PM 说“用户下单”,代码里却是:
insert_table_xyz(user_id, course_id)
这说明业务语言和代码语言断了。
思想模型
DDD 的核心不是复杂战术模式,而是:
业务专家和技术专家用同一种语言描述系统。
领域层应该承载业务规则,而不是把规则撒在 UI、SQL、controller 里。
好模型
placeOrder(accountId, courseId)
refundOrder(orderId)
grantAccessFromPurchase(purchaseId)
这些名字能和业务讨论对齐。
Atlas Action
拿一个 PM 需求,把其中的动词圈出来。检查代码里是否有同样的业务动作名。
小结
DDD 的第一步不是聚合根,而是让代码说业务语言。