2009年6月16日 星期二

W14 專案的開發(6)──Component的方法設計

每一個Component Interface Method都可被視為該元件的一個Use Case,在設計時同樣以輸出輸入為起點,再決定內部的處理流程與動作。

設計中若需有其他元件的功能支援,必須是位居同一層次的元件才可以;讓同一次層次負責該項功能的元件集中管理達成功能所需的資源,可以有效減少上下層的交互關聯。如何明確切割出有對應意義的分解動作、動作要放置自己這一層還是父元件,這個作法的好壞會影響到元件變更時的彈性。應切出方法的動作沒切分而直接實作在原有方法裡,會讓多個動作混在一個方法裡;應放置在父元件的方法沒拉上去,會令方法的功能對應在錯誤的層級上。

從上而下將所有元件的方法逐一設計出來、收集每個元件內的所有方法、記錄每個元件方法與其他元件方法的關聯,這些是設計階段所要做到的事。將方法的設計依"達成目標的SOP”之思維組織,並將動作放置在正確對應的位置,會得到較有組織化的程式結構。

看過物件導向程式的九個規則這篇文章,看起來像是從程式碼的呈現上去避免或改善一些寫法。比起"看到某種狀況就改用另一種方式做",倒不如"依其需求的想法作出對應的寫法"能夠更教人明瞭其中含義。例如以下列出的幾個規則:
●每個函式裡面只能有一層縮排,如果需要多一層,請多寫一個Method去呼叫
●不要使用else這個關鍵字
●所有基本型別都包裝成物件
●保持東西輕薄(Class不超過50行,每個Package不超過10個檔案)
●使用第一級collections

遞迴設計所有流程元件的每一個方法,直到剩下要實作功能元件為止;功能元件應由該功能領域的專家設計實作或是由元件庫裡挑選適合的元件使用。經過基本設計概念課程與系統領域教學的每一個人,應該都有能力進行流程元件的設計。

沒有留言:

張貼留言