Domain driven design UserRegisteredEvent与RegisteredUserEvent命名
我们公司开始使用领域驱动设计,我想知道如何命名事件 我正在犹豫:Domain driven design UserRegisteredEvent与RegisteredUserEvent命名,domain-driven-design,naming-conventions,Domain Driven Design,Naming Conventions,我们公司开始使用领域驱动设计,我想知道如何命名事件 我正在犹豫: UserRegisteredEvent:因为它是“用户寄存器”的过去时 RegisteredUserEvent:因为英语中形容词应该排在第一位 UserRegisteredEvent从我在互联网上找到的信息来看,似乎是正确的 但我想知道的是,如果这个人不是像发短信那样做动作的人: 已发送文本消息=>SentTextMessageEvent 用户发送TextMessages=>UserSentTextMessageEvent(
:因为它是“用户寄存器”的过去时UserRegisteredEvent
:因为英语中形容词应该排在第一位RegisteredUserEvent
UserRegisteredEvent
从我在互联网上找到的信息来看,似乎是正确的
但我想知道的是,如果这个人不是像发短信那样做动作的人:
- 已发送文本消息=>
SentTextMessageEvent
- 用户发送TextMessages=>
(有点冗长,我们并不在乎它是由用户完成的)UserSentTextMessageEvent
- TextMessage不发送自身=>
TextMessageSentEvent
UserRegisteredEvent
(用户自己注册)和RegisteredUserEvent
(有人注册了新用户)吗
谢谢大家! 事件是发生在过去的感兴趣的事情,所以你用过去式的句子来命名它。在您的示例中: 用户已注册 短信已发送
要缩写名称,可以省略“was”。但是“注册”不是一个形容词。当与业务涉众密切合作时(这是利用领域驱动设计的主要支柱之一),命名部分在大多数情况下非常明显。业务人员已经知道如何命名系统的哪个部分发生了什么 系统的哪个部分会给你相关实体(或对象)的名称,而发生的事情会给你一个动词的过去式 当在源代码中命名域事件时,我们提供了一些可读的事件摘要,这使得它可以从业务角度快速识别为相应的事件 您在问题中查看了两种不同的命名模式:
- 模式A:开头的过去时动词
- 登记器
- SentTextMessage
- 船运订单
- 交付弧
- 模式B:结尾处的过去时动词
- 用户注册
- 短信发送
- 订单装运
- 包裹的
当谈到<强>域事件< /强>时,您还必须考虑<强>域命令< /强>。对于域命令,您还可以添加…命令后缀。该命令表示一个命令,告诉您该做什么,其中涉及一些实体(或对象)和一些描述动词的命令形式
例如:- 船票
- 登记员
- SendTextMessage
- 因为英语中形容词应该排在第一位
- 已发送TextMessage=>SentTextMessageEvent
- SentTextMessage(事件)与SendTextMessage(命令)
- RegisteredUser(事件)与RegisterUser(命令)
- TextMessageSent(事件)与SendTextMessage(命令)
- UserRegistered(事件)与RegisterUser(命令)