2010-10-06 76 views
0

我只是碰到了某種形式的代碼,並得到了相當多的震撼:直接調用方法,或者Raise事件調用方法(事件處理程序)?

代碼片段:

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

從我的角度來看,這只是奇怪的,沒有別的,沒有別的。我看不出任何優勢,但是如果所有這些成員都是私有的,那麼使代碼看起來更復雜。如果它們是公開的(至少是事件聲明),則可以推測在ParentMethod中創建可擴展性或通知點的意圖,然後由於某種原因自動訂閱ChildMethod

+0

是的,我同意你的意見。這就是爲什麼當我看到代碼時我「感到非常震驚」。 :) – Gan 2010-10-07 02:26:38

1

我想這個代碼是一些未實現的功能的結果。我想開發人員首先計劃在該類中提供公共事件來處理父級方法。但後來他改變了主意,只是把事件變爲私人。從這個角度來看,ChildMethod是用戶處理事件的一種模擬。
我沒有看到使用私人活動的優點。難以理解的代碼和額外不必要的對象生成等缺點是顯而易見的。

+1

僅供參考,功能已實現並被調用。是的,我同意你的觀點。 :) – Gan 2010-10-07 02:29:19