什么是DDD领域驱动设计的统一语言?

栏目: 后端 · 发布时间: 5年前

内容简介:统一语言也称为无处不在的语言、通用语言、泛在语言,无处不在的语言是在有界的上下文中建模的,在其中标识表达了业务领域的术语和概念,并且不应该有歧义。无处不在的语言是Eric Evans在“域驱动设计 - 处理软件核心中的复杂性”中使用的术语,用于构建由团队,开发人员,领域专家和其他参与者共享的语言。无论您的软件是如何设计的,都需要在分隔的上下文中反映清晰且建模的泛在语言。

统一语言也称为无处不在的语言、通用语言、泛在语言,无处不在的语言是在有界的上下文中建模的,在其中标识表达了业务领域的术语和概念,并且不应该有歧义。

无处不在的语言是Eric Evans在“域驱动设计 - 处理软件核心中的复杂性”中使用的术语,用于构建由团队,开发人员,领域专家和其他参与者共享的语言。

无论您的软件是如何设计的,都需要在分隔的上下文中反映清晰且建模的泛在语言。

要产生清晰的无所不在的语言,您必须了解更多业务。

无所不在的语言的特征

  • 无处不在的语言必须在领域模型中表达。
  • 无处不在的语言统一了项目团队的员工表达语言。
  • 无所不在的语言消除了领域专家的不准确和矛盾。
  • 无所不在的语言不是领域专家强加的业务语言。
  • 无处不在的语言不是行业中使用的语言。
  • 无处不在的语言随着时间的推移而发展,它并不是完全在一次会议中定义的。
  • 应该拒绝不属于泛在语言的概念。

常见问题

我想强调我们应该避免的想法:

  • 由于缺少通用语言导致“翻译”,这对域模型不利,并导致错误的域模型的创建。
  • 由于缺乏共同语言,团队成员使用不同的术语而没有意识到。
  • 即使存在,也不使用普遍存在的语言进行通信。
  • 由技术团队创建用于构建域模型的抽象,域专家无法理解。
  • 技术团队无视领域专家参与领域模型,认为对领域专家而言过于抽象。但域专家必须参与,因为谁可以验证构建的域模型?

如何开发无所不在的语言?

你可能会问自己:但是如何开发无所不在的语言?有什么方法?谁参与了?有什么过程?

第一点是即使是领域专家也可能彼此不同意,只有通过公开讨论,分析现有文档,词典,标准等,我们才能提出更好的语言。

  1. 画:在白板上表达您的业务领域,不要担心它们是否是正式设计。
  2. 创建词汇表:定义开发所有术语的词汇表。
  3. 使用事件风暴:领域专家和开发人员可以使用Event Storming实现业务流程学习的快速循环,从而促进泛在语言的发展。
  4. 查看并更新:准备好以敏捷方式查看和更新​​生成的内容。

这些只是开发泛在语言的第一步。

沃恩弗农说:

代码是无所不在的语言的持久表达,准备放弃难以及时更新的图纸,术语表和其他文档。

代码需要表达无所不在的语言

想象一下,您正在开发电子商务系统,产品所有者提出以下要求:

“系统必须允许更改客户的电子邮件。”

简单,不是吗?但是你会如何在代码中表示这一点?

以下是一个实施示例:

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;
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Algorithms for Programmers

Practical Algorithms for Programmers

Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99

Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码