多重委派的兩個潛在問題
- 例外擴散:前一個委派拋出例外,後續委派不會執行
- 回傳值只保留最後一個:多個委派綁定時,呼叫結果為最後一個委派的回傳值,據此判斷易出錯
最佳實踐
- 多重委派回傳型別應為 void
- 委派鏈中不要讓例外擴散,各委派內部自行處理
使用委派前必須釐清的四個問題
- 傳遞什麼資訊?時機固定?一次還是多次? → 決定是否用委派、委派簽名
- 委派是否為最佳方案? → 重載建構函式、介面、事件等可能更簡單
- 誰是呼叫端?誰是初始化端? → 釐清責任歸屬,避免寫反
- 委派初始化放在哪裡? → 採就近原則(如 WinForms 控制項事件初始化),防止漏寫
問題二深度解析
委派降低耦合,但非唯一途徑。例如彈出視窗編輯資料列:
- 委派方案:視窗回呼通知修改完成
- 建構函式方案:
DataRow 為引用型別,直接傳入建構函式,視窗直接修改,更簡單直接
思考時勿侷限於委派,評估所有可行方案選擇最簡潔者。
委派初始化就近原則
參考 WinForms 控制項事件初始化模式,在需要委派的類別內部初始化,單一責任、易維護。