内容简介:统一语言也称为无处不在的语言、通用语言、泛在语言,无处不在的语言是在有界的上下文中建模的,在其中标识表达了业务领域的术语和概念,并且不应该有歧义。无处不在的语言是Eric Evans在“域驱动设计 - 处理软件核心中的复杂性”中使用的术语,用于构建由团队,开发人员,领域专家和其他参与者共享的语言。无论您的软件是如何设计的,都需要在分隔的上下文中反映清晰且建模的泛在语言。
统一语言也称为无处不在的语言、通用语言、泛在语言,无处不在的语言是在有界的上下文中建模的,在其中标识表达了业务领域的术语和概念,并且不应该有歧义。
无处不在的语言是Eric Evans在“域驱动设计 - 处理软件核心中的复杂性”中使用的术语,用于构建由团队,开发人员,领域专家和其他参与者共享的语言。
无论您的软件是如何设计的,都需要在分隔的上下文中反映清晰且建模的泛在语言。
要产生清晰的无所不在的语言,您必须了解更多业务。
无所不在的语言的特征
- 无处不在的语言必须在领域模型中表达。
- 无处不在的语言统一了项目团队的员工表达语言。
- 无所不在的语言消除了领域专家的不准确和矛盾。
- 无所不在的语言不是领域专家强加的业务语言。
- 无处不在的语言不是行业中使用的语言。
- 无处不在的语言随着时间的推移而发展,它并不是完全在一次会议中定义的。
- 应该拒绝不属于泛在语言的概念。
常见问题
我想强调我们应该避免的想法:
- 由于缺少通用语言导致“翻译”,这对域模型不利,并导致错误的域模型的创建。
- 由于缺乏共同语言,团队成员使用不同的术语而没有意识到。
- 即使存在,也不使用普遍存在的语言进行通信。
- 由技术团队创建用于构建域模型的抽象,域专家无法理解。
- 技术团队无视领域专家参与领域模型,认为对领域专家而言过于抽象。但域专家必须参与,因为谁可以验证构建的域模型?
如何开发无所不在的语言?
你可能会问自己:但是如何开发无所不在的语言?有什么方法?谁参与了?有什么过程?
第一点是即使是领域专家也可能彼此不同意,只有通过公开讨论,分析现有文档,词典,标准等,我们才能提出更好的语言。
- 画:在白板上表达您的业务领域,不要担心它们是否是正式设计。
- 创建词汇表:定义开发所有术语的词汇表。
- 使用事件风暴:领域专家和开发人员可以使用Event Storming实现业务流程学习的快速循环,从而促进泛在语言的发展。
- 查看并更新:准备好以敏捷方式查看和更新生成的内容。
这些只是开发泛在语言的第一步。
沃恩弗农说:
代码是无所不在的语言的持久表达,准备放弃难以及时更新的图纸,术语表和其他文档。
代码需要表达无所不在的语言
想象一下,您正在开发电子商务系统,产品所有者提出以下要求:
“系统必须允许更改客户的电子邮件。”
简单,不是吗?但是你会如何在代码中表示这一点?
以下是一个实施示例:
public class People : Entity { public string Name { get; set; } public string Email { get; set; } ... public void Update(string name, string email, ...) { if(!string.IsNullOrEmpty(name)) { Name = name; } if(!string.IsNullOrEmpty(email)) { Email = email; } ... } }
你怎么看待这段代码?你认为它真的反映了无所不在的语言吗?
请记住,聚合,值对象,领域服务,存储库,命令,事件等需要表达泛在语言。
请参阅下面反映泛在语言的代码示例:
public class Client : Entity { public string Name { get; private set; } public string Email { get; private set; } ... public void ChangeEmail(string email) { Email = email; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms in C (Computer Science Series)
Robert Sedgewick / Addison-Wesley Professional / 1990-01-11 / USD 59.99
This new version of the best-selling book, Algorithms, SecondEdition, provides a comprehensive collection of algorithmsimplemented in C. A variety of algorithms are described in eachofthe following ar......一起来看看 《Algorithms in C (Computer Science Series)》 这本书的介绍吧!