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

直接调用方法,或者引发事件来调用方法(事件处理程序)?[副本]

  •  0
  • Gan  · 技术社区  · 15 年前

    我刚碰到一种代码,吓了一跳:

    代码段1:

    Class ABC
        Private Event Event123()
    
        Private Function ParentMethod()
            RaiseEvent Event123()
        End function
    
        Private Function ChildMethod() Handles Event123
            ... code here
        End function
    End class
    

    (注意,函数和事件是私有的,代码是使用的 在内部 仅限全班。) (还要注意,代码是用VB编写的,但是这个模式也可以应用到其他语言中。)

    通常我只需要直接从ParentMethod调用ChildMethod,如下所示:

    代码段2:

    Private Function ParentMethod()
        ChildMethod()
    End function
    

    我想知道,代码片段1是否是一种最佳/推荐的实践?为什么?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ondrej Tucny    15 年前

    在我看来,这只是奇怪,没有更多,没有更少。我看不出有什么好处,但如果所有这些成员都是私有的,则使代码看起来更复杂。如果它们是公共的(至少是事件声明),那么可以推测在 ParentMethod ,然后由 ChildMethod 不知为什么。

        2
  •  1
  •   default locale    15 年前

    我认为这段代码是某些未实现功能的结果。我猜开发人员首先计划在该类中提供公共事件来处理父方法。但后来他改变主意,把这件事保密了。从这个角度来看,ChildMethod是一种模拟用户处理事件的方法。
    我看不出使用私人活动有什么好处。诸如难以理解的代码和额外的不必要的对象生成等缺点是显而易见的。

    推荐文章