代码之家  ›  专栏  ›  技术社区  ›  Jehof

注册到事件的命名方法

  •  6
  • Jehof  · 技术社区  · 17 年前

    假设我有一个类,它公开了以下事件:

    public event EventHandler Closing
    

    注册到此事件的方法应如何命名?您是否更喜欢遵循Visual Studio在为其生成的方法命名时使用的约定(又名.+=,Tab,Tab)?例如:

    private void TheClass_Closing( object sender, EventArgs e )
    

    还是你用自己的风格来命名这些方法?

    TheClassClosing , HandleClosing 等等)。但我还没有找到一个好的样式来表明方法的意图是处理已注册的事件。我个人不喜欢Visual Studio用来生成方法名的样式(下划线)。

    提高 事件(例如。, OnClosing ).

    4 回复  |  直到 10 年前
        1
  •  4
  •   Gishu    17 年前

    以处理程序实际执行的操作命名。

    // event += event handler
    saveButton.Click += SaveData();
    startButton.Click += StartTheTimer();
    
        2
  •  3
  •   jerryjvl    17 年前

    theObject.Closing += SaveResults;
    

    或者在方法处理之后:

    theObject.Closing += ClosingHandler;
    

    哪一个更可取实际上有点取决于背景。

    在第一种情况下,可以立即清楚处理程序将要做什么,这使得注册处理程序的代码更具可读性。..但看看处理程序 SaveResults 单独来看,调用它的时间不一定很明显,除非事件参数有一个明显的名称( ClosingEventArgs 或一些这样的)。

    在第二种情况下,注册更加不透明(好吧,那么当 Closing 发生?),但另一方面,看看处理程序实现,就会清楚发生了什么。

    我想选择哪一个取决于你想让两者中的哪一个更明显;注册的位置或处理程序的实现。

    或者,你也可以选择这两种方法的邪恶组合:

    theObject.Closing += ClosingHandlerSaveResults;
    

    为了记录在案,我更喜欢第一个命名方案 theObject 包含在与实施不同的范围内 保存结果 ,以及第二种方案,当我将处理程序连接到所有包含在同一类中的事件时。

        3
  •  0
  •   Michael Petrotta user3140870    17 年前

    我将事件处理程序命名为类似于Visual Studio创建的事件处理程序(您提到的+、=、选项卡、选项卡)。我试图在代码中保持命名的一致性,我知道我至少在某些时候会使用VS auto-creater创建处理程序。

    下划线不会打扰我。

        4
  •  0
  •   Tom Anderson    17 年前

    可能:OnObjectNameEventName,例如

    private void OnTheClassClosing(object sender, EventArgs e)
    

    这与内部事件方法相匹配,加上对象名,应该有助于区分,此外,引发事件的方法本质上是内部事件处理程序

    用户点击表单,表单调用OnClicke,执行它的操作,然后引发Clicked事件,在我看来这很自然。

    推荐文章