OnMethod应该总是引发事件(命名约定困境)吗?

时间:2015-09-01 18:23:30

标签: c# naming-conventions

OnMethods 通常用于举起活动 在派生类中重写该方法以添加一些额外的逻辑而不是附加到该方法引发的事件也是很常见的。

现在考虑这样的情况:
两个类SceneManager和SceneBase。 SceneManager负责关闭/显示/隐藏场景。当SceneManager使用场景执行此操作时,会通知场景,以便场景可以采取与其状态更改相关的一些操作。
为此我决定在SceneBase中使用虚拟方法 OnClose OnShow OnHide ,这样SceneManager可以在合适的时间通知SceneBase(而不是附加) SceneBase到SceneManager的事件,如SceneShownEvent)。我认为这个命名惯例对我来说是最具描述性的 但是这个命名约定(On MethodName )通常保留用于引发事件。 OnMethods通常是受保护的虚拟,因此派生类可以向OnMethods添加一些其他逻辑(而不是附加到事件)。
因此,似乎除了上升事件之外,该方法中还可能存在其他逻辑。不仅如此,例如微软的Observer的模式接口也有OnMethods,它们不需要上升事件。只是用于通知用户状态变化。
他们是

  • IObserver.OnNext,为观察者提供新的或当前的 信息。
  • IObserver.OnError,通知观察者错误 发生。
  • IObserver.OnCompleted,表示提供者有 已完成发送通知。

我可以将我的方法命名为AfterShown或Shown。但对我来说,OnMethod最适合这种情况。所以问题是:

使用名称OnMethod作为通知方法是否可以不会引发事件并从其他类调用,就像我的情况一样?或者我应该只为事件上升方法保留它?

0 个答案:

没有答案