2008年3月23日 星期日

M17 令人感到麻煩的設計(13)──Method的起始與結束保持唯一

Interface Method的進入點對於實作的Class是固定的,執行的流程都從這裡開始。在流程中如果遇到要提早離開方法的狀況,相信很多人都會直接return或是throw new Exception()。

執行效能是很常被要求測量的,使用者會希望知道每個Use Case Method或是Activity Method執行需要多少的時間?直覺的想法當然是在進入方法時記錄當時時間,結束時再取得時間減去開始的時間就是答案。可是,哪裡才是方法的結束?看起來到處都有結束點,而且出去後就是分散到各個使用方法了。

基於“設計時預留抽取相同作用的地方”的想法,在方法外包裝一個入口方法來控制執行進出就可以完美地解決問題,無論流程在任何時間點return都會先回到入口。再往上一層想,整個系統進出入口方法裡通常會插入固定的事情,可不要直接把要做的事放到入口方法裡,還是依抽取的原則準備一個Class來放置進入入口要做的Method與離開入口要做的Method,在入口方法的前後則固定呼叫這裡的Method。

沒有留言:

張貼留言