2008年2月18日 星期一

L02 以理想的軟體架構為目標

我自己的理想軟體結構之基本觀念只有一句話:靜態物件與動態方法全部都要一一對應。這句話說起來很簡單,但是要在系統設計時落實時勢必要多費不少時間。

我所用的作法是在2007/11的專案進行時領悟出來的,當時我必須留下系統架構的空殼給三位工作不滿兩年的工程師,讓他們逐一把Use Case的實作填進系統。如果依照以前自由堆疊的寫作風格,等拿到手裡時鐵定是無法動彈的僵化結構,因此我擬定的策略是努力把系統結構鋪到所有可能會放置程式的地方。

現今留存下來的系統是四個人花費兩個多月完成的,然而當初我費盡心力建設起來的軟體結構卻沒被他們作過任何調整──除了一個當初我自己偷懶將應分成五個對應卻合成一個的Module之外;他們都覺得一開始的系統架構已經滿足之後製作功能的全部需要。所以這個設計方式我將會一直沿用下去。

在一一對應物件與方法時,我同時兼顧了一個目的:在設計結構上進行更細部的設計、實作與重構時,如果實行的內容只有Method的垂直或水平的抽取與移動的話, 就是理想的架構。垂直的定義是:方法往父類別(Generalize)或子類別(Specialize)移動,或將相同的程式區段另抽出Method重覆使用;水平的定義是執行方法的責任往呼叫自己或自己呼叫的方向(Delegation)移動,或者是合併或拆解Method。

沒有留言:

張貼留言