统一语言也叫公共语言,DDD战略设计的第一步就是统一语言,统一语言是团队共享的语言,是团队自己创建的公用语言。
团队中同时包含领域专家和软件开发人员。自然地,领域专家对统一语言有很大的影响,因为他最了解业务。
下面是一个以“护士给病人注射标准剂量的流感疫苗”为例,看看如何通过代码表现出实际的业务流程:
可以看出,最后一种RD和护士是可以沟通的,否则就是鸡同鸭讲,无法沟通,或者沟通成本很大。
另外一个例子:民航业的运输统计指标为例,牵涉到与运量、运力以及周转量相关的术语,就存在 ICAO(International Civil Aviation Organization,国际民用航空组织)与IATA(International Air Transport Association,国际航空运输协会)两大体系,而中国民航局又有自己的中文解释,航空公司和各大机场亦有自己衍生的定义。
城市对与航段
如果我们不明白城市对运量与航段运量的真正含义,就可能混淆这两种指标的统计计算规则。
这种术语理解错误带来的缺陷往往难以发现,除非业务分析人员、开发人员与测试人员能就此知识达成一致的正确理解。
统一语言的重要性可以根据Jeff Patton 在《用户故事地图》中给出的一副漫画来直观的描述:
统一语言本身的形式并不重要,或者说统一语言并没有统一的形式,它甚至可以是任意一种形式。
但是,当且仅当,统一语言与领域模型关联,且多方认可并承认对统一语言的集体所有权时,统一语言才能成为真正的统一语言。