2008年2月13日 星期三

K13 令人感到麻煩的設計(7)──入口、流程與動作

Use Case與Activity的製作其實就是最high level流程與動作的分離,藉由將Activity定義為Interface Method將之固定為完成特定動作的目的,此時的Use Case可以被限制到只是用流程串連必要Activity的規則。

當然我們可以把Use Case用一個Class甚至是一個方法來完成,在功能上所有作法得到的結果都是一樣的,但是把多個動作組合在一個方法裡所付出的代價就是它被限制住只能有組合後的結果。雖然加上參數後可以應付多種不同的需要改變內部,但是當出現要增減動作的需要時就會發現改動不僅不容易而且還要考慮很多相容的問題。這是把流程與動作合併在同樣方法的問題。

雖然重點在於流程與動作的分工,但是入口卻是一個容易被忽略的地方。即使在很多地方很明白地表示進入後就是要達成某件事,不過仍有可能會在進入後參考某些設定而改變要做的事;而有時會只需要在其他地方處理同樣的功能,倘使把流程跟入口綁在一起又會形成再加工切割的後果。我們必須記得的是:預留好事後切割的空間會比重構結構來得容易而且少很多風險。

在每一個特定功能的設計裡,我的作法都會是:使用入口(有時的確不需要存在)、流程與動作三個層次合作完成指定的功能。(D06的圖也是類似的概念)

沒有留言:

張貼留言