命名约定-事件对象应命名为过去时动词还是名词



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

process(OrderShippedEvent);

apply(ShipOrderEvent);

在其他情况下,会有像这样的处理程序

HandleOrderShipped(OrderShippedEvent)

HandleShipOrder(ShipOrderEvent)

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

嗯,它们的含义不同:

  • ShipOrderEvent表示订单即将发货,但我们不确定它是否已经发货
  • OrderShippedEvent表示订单已发货

它们对.NET中System.Windows.Forms.Form类的FormClosing/FormClosed事件是微笑的。因此,与其建议使用什么名称,我更建议您思考您希望用事件表示什么,并相应地命名它。

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

最新更新