2007年11月15日 星期四

G12 程式設計的能力(3)──異中求同,同中求異

在多個不同的地方找出共同的部份抽取出來,在抽取出來的共同部分裡又能分辨出差異的地方。聽起來有些玄妙,但是這卻是要做好設計不可或缺的能力。

從物件角度,系統每個物件都是各自獨立的物體,我們必須去分析物件間的共同關係,將之抽取為Interface,在處理Interface時又必須可以分辨出它的實體是哪一種物件。

從程式角度,某一段程式碼在多個地方出現,因此我們會將之獨立成一個子方法供需要的時候呼叫,但是在子方法裡要能知道是從哪裡呼叫來的。

從系統角度,每個Use Case都被設計為一個View對應一個Controller彼此是沒有交集的,此時會在所有的View進入Controller之前加上一個Façade作為共同經過的處理,在Façade裡必須知道現在進入的是哪一個Use Case。

共同的部分是要作為reuse使用的,差異的部分則是用來區分每個物件、程式或Use Case的唯一性。找出同理與區分差異的動作做多了,現在幾乎隨時隨地都在對身邊的所有對話與事件作推理,這應該屬於職業病的一種吧?

沒有留言:

張貼留言