- Vixual - http://www.vixual.net/blog -

[轉載]軟體開發的新生活運動

轉載自: 愛德華日誌


不曉得是幾十年前從 "歷史" 還是 "生活與倫理(現在小學還有這門課嗎?)" 唸到的,那個在現代聽起來有點八股的新生活運動。我倒不是要在此強調復興中華文化,講究禮義廉恥,四維八德。只是新生活運動所推行的:「整齊、清潔、簡單、樸素、迅速、確實」六項生活記律,倒是與近代軟體開發思潮所標舉的簡易之風不謀而合。

整齊、清潔

程式必須依照一致之風格來寫作。沒用到的變數要刪除,測試用的訊息不要當成註解留在文檔中。更進一步的說,系統的設計架構應明確,類別間的階層與引用關係應形成清晰的脈絡,若是系統關連猶如錯綜複雜的網路,在維護上就相當困難。

要做到整齊清潔的設計,除了一開始開發系統時,就要儘量依據物件導向之原則,採用適當的設計模式外,在設計過程中還要不時的對既有設計加以重構。這就好像是種植盆栽,軟體就像是種在盆裡的那顆樹。一開始時,我們會依照自己的期望來形塑,但當它開始成長,就必須讓它依照其本性生長,但成長到一定的階段,又必須適度的加以裁剪。在如此環境下長成的系統,就會自然適性,有風格卻又避免掉明顯的匠氣。

簡單、樸素

好的設計應該易於理解、易於改變、易於重用。「簡單就是美,不做過度設計,不開發系統用不到的功能;以更少,做更多」這幾乎成為 Agile Methodolodgy 的金科玉律。每個方法 (method) 應設計成只完成一件事,並避免在方法執行過程中產生與方法名稱無關的副作用。每個類別應僅代表一抽象或具象概念,當某一類別同時代表一個以上的概念,就會在重用時在引用端導入不必要的特性與關連,而降低重用性。

樸素的概念,也讓我想到 Plain Old Java Object (POJO) 的應用。Hibernate 與 Spring Framework 共有的特性之一,就是善用 POJO 既有的能力,來簡化物件模型。也因為 Hibernate 與 Spring Framework 只是簡單的讓 POJO 來代表 Model 的觀念,而不把其他的責任(如實體層的存取,使用者動作的反應) 加在模型上,讓這 POJO 得於遊走於 3-tiers 或 4-tiers 之間,讓我們見識到了樸素的能量,真是願原力與你同在!

簡單、樸素也適用於使用者界面的設計。除非你在設計遊戲軟體或多媒體動畫,除非你極具有美學概念,否則把應用程式弄成五顏六色,並綴之以五花八門的圖示(這種界面風格被稱為小丑裝),還不如直接讓應用程式以作業系統預設的風格呈現。

迅速、確實

Small iteration, Continuous integration 以及 Build automation 所提供的,正是迅速的開發程序。而正是因為著重確實,所以才要 Unit test,才要 Test driven design,才要代碼未動,測試先行。

迅速、確實從程式的 performmance(表現,效能)上來講,則代表系統要能有效率的完成操作,又能確實的達成系統的功能。

開發速度(迅速) 與開發品質(確實) 永遠難以兼顧,若能保持簡單、樸素的原則,要做到迅速、確實,就會容易一些!