Open kenttanl opened 3 years ago
在智能手机诞生的初期,每个手机厂商的数据线大多是不一致的。当我尝试向其他同学借一跟安卓数据线的时候,通常会有这样一些对话:“你是什么样子的接口?”“华为的数据线应该可以用吧?“”你试试看这个行不行吧?“ 等等形如此类。大多时候,我们总是需要反复的确认才能得到最终一致的认知。
而如果我使用的是苹果手机,那么我就可以问他:”你有苹果手机的数据线吗?“,他可以很准确的告诉我有或者没有,因为苹果手机的数据线总是一致的,我们很早便有了非常一致的认知。
回到系统设计中,当我们在开始一个系统设计时,我们需要与需求提起方或者领域专家(后面统称甲方)来确定需求,并根据需求开始系统的设计与开发工作。此时设计到两个方面的沟通工作:一方面是与甲方沟通,以确定系统中所需要的模型以及业务流程等,另外一方面是与技术团队沟通,以从技术角度来设计程序实现。
这个过程会涉及到大量的沟通,所以如果我们在系统中引入了数据线这个模型,而甲方认为的数据线是苹果手机的数据线,技术团队认为的数据线是安卓手机的数据线,或者有人认为数据线叫充电线也没有问题。这就意味着日常所讨论的术语无法确定其唯一性,并且最终与代码中所使用的术语也不一致,甚者同一个人在讲话和写代码时所使用的术语也是不一致的。所以最终我们可能会看见这样一些术语出现在代码中:DataLine(数据线)、IPhoneDataLine(苹果手机数据线)、ChargingCable(充电线)等等,而它们所表达的含义事实上是同一种,都是甲方口中代表苹果手机的数据线。
所以为什么我们需要统一语言?因为我们需要降低沟通成本,保证沟通的顺畅以提升领域知识的消化速度,同时保持代码在实现过程中名词的一致性以使得代码更加精简等等。
统一语言的作用在《领域驱动设计》第二章有非常详细的描述。而在我的实际开发过程中,因为忽略了其重要性,导致不同的开发人员对于同样一个名词出现了多种不同的实现,进而导致了重复的实现、代码的可读性差、与甲方沟通存在歧义等不良后果。所以在最新的系统设计中,我总是将统一语言放在非常重要的位置,并不停的宣导给其他同事。不得不说,沟通成本确实下降了非常多,相互之间阅读代码也更顺畅了!
1. 统一语言:一个团队,一种语言