2008/02/01

學習筆記: 目標是設計軟體框架

我的新任務

從僅具有物件基礎概念,到練就一身能夠設計 framework 的能力,這中間的學習過程,我將記載於此一系列的筆記中。我所使用的技術是 .NET Framework 2.0,語言為 C#。

從 2002 年在巨匠電腦補習上 Java 課的時候,同時開始自修 C#。自此投入 .NET Framework 的技術領域。迄今已有五個年頭,對於程式設計熟稔度僅止於是個熟練的 programmer,直至遇見一位機緣結識的朋友,在他的接納下,加入他的團隊,開始真正踏入軟體設計之路,也打開了我的視野。

我發覺,使用 .NET Framework 的技術,可以很快速的開發各類解決方案,但是因為它的好用,使得我在大部分的情況下,並不會去深入探究更多的軟體設計核心。幾乎遇到的任何問題都可以在當下迎刃而解。或至少花苦工就能解決大多數的問題。總是見招拆招。這樣的結果,造成忽略許多軟體工程,也不能成就一個真正好用的軟體。

曾經,我看著幾個常用的軟體,如 foobar2000 播放器,或是類似的多媒體播放軟體,總為它的高度延伸性所折服,想不透為甚麼可以做出這麼好的 plug-in 架構,它是怎麼辦到的? 其實我早就學過了,透過介面設計,還有動態載入組件就可以達成,卻完全沒有運用過,甚至不知道如何運用,更遑論發揮其潛能了。

懵懂的我去上了一門課,軟體設計架構師精修班,在林耀珍老師的介紹中,看到許許多多的 design patterns。那時,design patterns 對我而言猶如天上群星,雖耀眼卻渺不可及。

現在我被賦予要開發一套 framework 的任務,是一件非常大的挑戰。然而人如果不把目標訂得夠大夠遠 (當然不要好高騖遠),並且施予適度的壓力,就不會想快馬加鞭奔馳而去。目前仍在起步階段的我,必須閱讀許多書本,並詢問前輩意見,才能慢慢做出一些有樣子的東西。

這過程中有許多的嘗試與心得,才發現,這種學習的心路歷程的經驗,沒有任何書本在傳遞的。而我一直認為,學習力是人類最重要的技能,在前輩鼓勵下,我開始將之一點一滴記錄,希望能夠在同輩與後進簡產生一些迴響,也希望各位前輩看到任何不足之處,予以指導與啟發。

書單

先列出目前閱讀的書籍,是這些書開始帶我進入軟體設計的領域。
1. 深入淺出設計模式 Head First Design Patterns (O'Reilly)
2. UML 與樣式徹底研究 by Craig Larman (Pearson)
3.物件導向分析設計與實作 by 葉智偉 (儒林)
4. Windows Forms 框架設計實務 by 黃忠成 (金革)
5. 應用框架的設計與實現-.NET平台 by Xin Chen (電子工業出版社)
6. UML Distilled 3rd Edition by Fowler (Pearson)
7. Framework Design Guidelines by Krzysztof Cwalina, Brad Abrams (Addison-Wesley)