领域驱动设计 - 复杂性

今天开始看《领域驱动设计》,以下简称DDD,看了几页还是蛮对胃口的,一个原因是我们公司一直在用DDD,另一个原因是这本书算得上是软件开发领域经典书籍中的经典。

书中一开头就提到如何控制系统复杂性

控制复杂性的关键是一个好的领域模型,这个模型不应该仅仅停留在领域的表明,而是要透过领域的表象抓住领域的本质。

什么是一个好的领域模型呢?用黎叔的话来说就是每个领域对象所代表的概念是简单、清晰和优雅的,每个对象上的属性所代表的概念是简单、清晰和优雅的,每一个对象之间的关系是简单、清晰和优雅的。

就拿清晰这一点来说,我们的领域模型中还有一些不清晰的地方,比如今天早上讨论的ETA和RETA才刚刚弄清楚,不清晰体现在两个方面,一方面这个概念的定义不清晰,另一方面,大家对这个概念的定义有不同的理解,所以当我们引入一个新的概念时,一定要严格清晰显示地把这个概念的定义清晰地定义出来,并在整个团队范围内达成一致。

书中还提到:

真正强大的领域模型是随着时间演进的,即使最有经验的建模人员也往往发现他们是在系统的初始版本完成之后才有了更好的想法。

比如在车辆安排功能和预约功能做好以后,我们才慢慢地意识到安排车辆本质上就是预约,一次车辆安排一般情况下隐含了两次预约,一次是对提货仓库的预约,一次是对送货仓库的预约,一次预约可以精确到货物的具体信息和时间段的具体信息,也可以没有这些信息。

从演进的角度来看,我们的领域模型好像还不够强大,因为我们现在要小小演进一下,风险都很大。

但是为了控制住系统的复杂性,我们还是要下定决心排除万难在ROI最高的部分逐步演进的。

你可能感兴趣的:(领域驱动设计 - 复杂性)