index
软件核心复杂性的应对之道
软件的核心复杂性, 也就是在开发中遇到的共有的复杂性。 软件的核心复杂性:
- 系统老化: 在项目开始初期, 技术可能是当下最前沿的, 但随着时间流逝, 技术演进, 那么在未来有更好的框架,库等更好的技术时, 迁移是否方便
项目中有必要全部使用DDD思想?
DDD解决的是软件中的核心复杂性, 对于简单或只查询的业务, 例如报表、分析类查询业务,完全不需要强行套用 DDD 的战术模式。
DDD 解决的是核心领域的复杂性,也就是你的业务竞争壁垒所在。比如电商中的交易、风控、营销策略等,这些地方业务规则又多又密,频繁变化,用 DDD 能极大地提升可维护性和应对变化的能力。
而报表、后台统计、数据导出这类“辅助”功能,通常属于支撑子域或通用子域。它们的业务逻辑简单(就是聚合查询),与核心域的耦合很低,完全可以用简单的贫血模型 + SQL 查询快速实现。强行给它建模成聚合、实体,只会徒增代码量和理解成本。
重点
DDD着重业务, 对实体属性产生的状态变化优先进行设计,其它一些, 例如报表等可以延后设计