在复杂业务系统设计中,您如何平衡"领域模型纯度"与"工程实现成本"?是否有值得警惕的过度设计反模式?
先说个题外话,我个人反对技术应用实践中的“纯度”,我主张一切从实践出发,一切以目标和价值为导向,一切以成败论英雄。白猫黑猫,抓住老鼠就是好猫~~~ 发对技术原教旨主义~~~
关于平衡领域驱动设计和工程实现成本,下图可以参考
项目复杂度越低,CRUD的简单开发方式成本更低;复杂度越高,DDD的开发成本更有优势。CRUD方法和DDD方法的复杂度成本曲线有个交叉点,交叉点左边适合CRUD,交叉点右边适合DDD。那么如何判断交叉点呢,这个就是架构师的经验了~~~ 经验真的还是很重要的~~~
我自己实践的做法是,一开始用CRUD,随着业务不断发展,项目变得越来越复杂,开发维护进度明显变慢的时候,对系统进行DDD重构。因为对很多互联网项目而言,很多时候,业务还没有发展到足够复杂的时候,就已经关闭了,用这种方法综合成本最低。当然,非互联网项目场景有自己的特点,需要架构师根据经验判断。