事件对象应该命名为过去时动词还是名词?

8

我一直在阅读几篇事件溯源的文章和示例。我看到有些被称为动词,而另一些则被称为名词,两者都可能在末尾添加事件。哪个更正确?一个例子是OrderShippedEvent(有时只是OrderShipped)与ShipOrderEvent。操作这些类型对象的方法的时态也没有帮助太多。以下是我找到的一些示例。

process(OrderShippedEvent);

或者
apply(ShipOrderEvent);

在其他情况下,会有像以下这样的处理程序:
HandleOrderShipped(OrderShippedEvent)

或者
HandleShipOrder(ShipOrderEvent)

我认为应该有一种标准的方式来命名和处理任何上下文中的事件,虽然我最感兴趣的是事件溯源场景。

2个回答

6

他们的意思不同:

  • ShipOrderEvent 表示一份订单即将发货,但我们不能确定它是否已经发货。
  • OrderShippedEvent 表示该订单已经被确认发货。

它们类似于.NET中System.Windows.Forms.Form类的FormClosing/FormClosed事件。因此,我建议您考虑要表示什么,并相应地命名事件,而不是建议使用哪个名称。


5

事件通常定义了某些事情已经发生或已被触发,并在被触发后发送信息。我坚定地支持保留过去式动词作为中间选项。当然,一些语言有特定的最佳命名惯例 - 有些使用onEventName,有些使用正在发生的操作(Button.Click)。至于在名称上附加Event一词,嗯,我不习惯 - 但据我所知,命名惯例存在是为了摆脱神秘变量(通过查看它们,您无法了解其数据或为什么存在),因此对于方法和事件也适用 - 就像一个命名为DoSomething()的方法和一个命名为Thing的事件。人们可以理解它们,但这需要更具冒险精神的人去解析代码,以便将“超级良好命名”的变量/方法/函数正确地放置在某种人类可理解的流程中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接