7

我一直在阅读几篇事件溯源文章和示例。我似乎有些是动词,有些是名词,两者都可能在结尾加上事件。哪个更正确?一个例子是。OrderShippedEvent(或者有时只是 OrderShipped)与 ShipOrderEvent。对这些类型的对象进行操作的方法的时态也没有多大帮助。以下是我找到的一些示例。

process(OrderShippedEvent);

或者

apply(ShipOrderEvent);

在其他情况下会有处理程序,如

HandleOrderShipped(OrderShippedEvent)

或者

HandleShipOrder(ShipOrderEvent)

我认为应该有一种标准方法来命名和处理任何上下文中的任何类型的事件,尽管我对事件溯源方案最感兴趣。

4

2 回答 2

6

好吧,它们的含义不同:

  • ShipOrderEvent表示订单即将发货,但我们无法确定它是否已经发货。
  • OrderShippedEvent意味着订单已经发货,这是肯定的。

它们类似于 .NET 中 System.Windows.Forms.Form 类的 FormClosing/FormClosed 事件。因此,与其建议使用什么名称,我更愿意建议您思考您想要通过您的事件代表什么,并相应地命名它。

于 2011-06-26T01:19:15.040 回答
5

事件通常定义某事已经发生已被触发,并在触发发送消息。我勇敢地站在中间保留过去时动词的选项之外。当然,有些语言有特定的命名约定最佳实践——有些有 onEventName,有些使用现在发生的动作(Button.Click)。至于在名称上附加 Event 单词,好吧,我不习惯 - 但据我所知,存在命名约定以摆脱神奇的变量(通过查看它们,您至少无法掌握它的数据是什么或它为什么存在),因此同样适用于方法和事件 - 例如名为 DoSomething() 的方法和名为 Thing 的事件。人们可以理解它们,但这需要一个更冒险的灵魂去解析代码,以将超级命名的变量/方法/函数正确地放置在一些人类可以理解的流程中。

于 2011-06-26T01:18:55.603 回答