四、战略设计(通用语言)
众所周知,语言的发明加强了群体内部的交流。在DDD中,团队内部也必须要产生一套适应于行业,适应于团队的语言,它能在团队内部高效,准确地传达目的意图以及大量的领域信息。很多人对通用语言的理解是,不就是一个名词吗?确实表面上看就是一个名词,但是如果这个名词某些其他东西,比如:
这样团队内部成员说出这个名词时,其他人便能捕获到名词背后的很多信息,从而提高了单个词所存储的信息。这里我以我们公司用到的一个名词为例: 业绩归属人,普通人看到这个词,最多能拆解这个名词,业绩 + 归属,但其实它背后所牵扯到订单处理的相关权限,这些对团队成员内部是显示的,对团队外部成员是隐藏的。
下面大家请看一副图:
一开始团队内部的各个成员以为自己对于一个东西都达成了一致,但其实作为局外人,我们发现他们每个人对其理解都不一样。当大家把各自想法表达出来才发现,原来大家意见完全不一样,没办法,必须对三个人的想法进行加工处理,最终我们产生了一种新的东西,大家把之前不同的理解和想法都理解为一种新的东西。
其中,通用语言中很重要的一点, 通用语言的冲突性,基数不变的情况下,单位信息量越高,冲突的可能性越大。当通用语言发生冲突,团队内部势必会产生歧视,这时候上面的景象便会出现,解决办法通常是: (1)寻找新的替代区分方案 (2)划分限界上下文,寻找区分的边界。其实说了这么多,它最大的作用还是达成共识,减少沟通成本; 另外一个就是反向验证限界上下文划分的合理性。
总结一下
上文多次提到了限界上下文,这个名词我们将会放在后面的文章中讲解。通用语言的形成并非一朝一夕形成的,必须要经过大量的争论,思考,达成一致,然后对每一个领域名词反复打磨,最终我们才能得到一个相对准确高效的 通用领域名词。一旦发现通用语言存在冲突,需要马上对其进行团队内部的统一,因为如果不及时纠正,后面进行限界上下文划分以及领域建模时,造成无比巨大的 “噪声”。万不可小视!