当前位置:  开发笔记 > 编程语言 > 正文

命名,声明和定义委托和事件约定

如何解决《命名,声明和定义委托和事件约定》经验,为你挑选了2个好方法。



1> bdukes..:

关于命名事件的MSDN:

事件总是指某个动作,无论是正在发生的动作还是已经发生的动作.因此,与方法一样,事件以动词命名,动词时序用于指示事件引发的时间.

DO事件的名称动词或动词短语.

例子包括Clicked,Painting,DroppedDown,等等.

不要给事件的名称与之前和之后的一个概念,使用本时和过去时.

例如,被关闭的窗口前时引发close事件将被称为Closing,和一个是窗后引发关闭将被称为Closed.

X 请勿使用"之前"或"之后"前缀或后缀来指示事件前后事件.使用刚才描述的现在和过去时态.

DO与"事件处理"后缀名的事件处理程序(用作类型的事件的代表),如示于下面的例子:

public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);

不要使用命名的两个参数发送方ê在事件处理程序.

sender参数表示引发事件的对象.sender参数通常是类型object,即使可以使用更具体的类型.

DO名称事件参数类的"EventArgs的"后缀.

因此,事件应该用动词或动词短语命名.相反的OnSomething,使用Something,假设Something实际上是一个动词,如Close,ClickManagedPiplelineAbandoningManagedPiplelineAbandoned.

对于事件的委托应与被命名EventHandler后缀,使CloseEventHandler,ClickEventHandler,ManagedPiplelineAbandoningHandler,等.

对于与事件无关的代理,请使用名词,如EventProcessorItemRetriever,而该代表的实例是动词,如processEventretrieveItem.

委托引用的大小写应该是camel,除非引用不是私有的.但是我想不出你有非私人代表字段的情况.

但是,由于建议使用传统的事件处理程序签名(即object sender, EventArgs e)),因此应使用通用事件处理程序而不是定义自己的事件处理程序.也就是说,您的事件将被定义为:

event EventHandler Something;



2> Andrew Hare..:

你拥有的一切看起来都非常标准 - 我唯一要改变的是事件名称Something而不是onSomething.按照微软的惯例,你最终会得到更像这样的东西:

delegate void SomethingHandler();
event SomethingHandler Something;

protected void OnSomething()
{
    if (this.Something != null)
        this.Something();
}

作为一个很酷的技巧,你可以为你的Something事件添加一个空委托,这样你就不必在引发它之前检查事件是否为null:

delegate void SomethingHandler();
event SomethingHandler Something = delegate {};

protected void OnSomething()
{
    this.Something();
}


我会考虑将SomethingEventArgs包含在您的样本中,因为这是约定的一部分.此外,EventHandler 更常见于2.0后
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有