
為大專案增添新功能時, 務必使用Tiny Program技巧
建立一個全新的Project並且只是為了單一新功能配置好編譯與執行的環境
開發流程如下:
1. Text UML規劃
2. Unit Test
3. 為新功能建立Tiny Program(小程式)
4. 合併到大專案的CVS
UML, Design Pattern, Python, Java, C++, C#, Semantic Web, OOP, PKI, Data Mining, DRM, Search Engine
如果你經常需要畫流程圖或者方塊圖, 一定有跟我一樣的體驗, 明明幾個箭頭就可以解決的東西, 偏偏要開出作圖工具來拉線, 實在有夠麻煩, 製圖工具的啟動 時間緩慢之外, 人類通常都有浪費時間在調整框框位置或大小的癖好 (天啊! 程式已經寫不完了... 別再調啦!), 如果可以用很簡單的文字來表現UML圖形, 開發者就能夠更專注在改良類別設計. 舉例之前我們先定義Text UML中兩種文字箭頭的意義:
=> 代表 繼承/實現 關係 (Inheritance, Generalization, Realization)
-> 代表 引用/使用/擁有/依賴 關係 (Association, Dependency)
為什麼每種文字箭頭都代表了多重意義? 因為簡單勝於一切, 若要精確的呈現類別關係, 使用精準的UML圖形會比Text UML佳, 我們使用Text UML就是貪圖簡單的力量:
MailClient->SqlStorage
以上Text UML說明了電子郵件客戶端類別MailClient使用資料庫類別SqlDatabase來儲存郵件, 一旦SqlStorage改變, 因為MailClient相依於SqlStorage所以可能必須跟著改變.
利用Text UML的簡易性, 我們可以在十秒內將上述相依性打破, 讓MailClient可以自由選擇將電子郵件儲存在檔案FileStorage或資料庫SqlStorage:
MailClient->IStorageService<=FileStorage, SqlStorage
上述Text UML是讓MailClient相依於Interface IStorageService, 再讓FileStorage與SqlStorage實現IStorageService當中宣告的方法, 這樣一來MailClient就可以任意選用檔案或資料庫的儲存方式, 這是典型Strategy Pattern的手法.
然而文字Text UML為我們帶來什麼樣的好處? 有個很明顯的優點是: 可以利用字串替換的方式打破相依性, 我們完全不需要管類別真正的意義, 就可以運用單純的字串替換達到更有彈性的設計. 假設我們有A, B兩個類別, 而A相依於B, 則在Text UML表示如下:
A->B
若想運用Strategy Pattern將類別A與B之間的相依性切開, 只需要將"I<=C,"字串插入原本B的前面如下:
A->I<=C,B
其中I相當於郵件範例中的IStorageService, 而C與B相當於上述郵件範例中的FileStorage與SqlStorage. 這麼簡單的字串取代就能完成Strategy Pattern的設計, 完全不用管你實際類別到底有什麼作用, 文字的力量表現無遺. 這種字串取代很容易可以利用程式自動化, 熟悉文字處理的開發者, 只要幾十分鐘就可以做出好用的Text UML工具, 輔助進行各種複雜的設計.
