XP設計原則

agile_boy發表於2009-03-31

1 簡單是關鍵 
簡單的設計總是花較少的時間完成複雜的任務。因此記住要總是做有可能完成的最簡單的事情。如果你發現一個事情很複雜,用簡單的事情替換它。與其在複雜的程式碼上消耗更多的時間,還不如用簡單的程式碼替換,這樣更快,而且更省事。儘可能使事情簡單化,在執行計劃期間,儘可能不增加新的功能。要記住保持簡單的設計是長期堅持的工作。 

2 選擇系統比喻 
選擇系統比喻是為了通過對類和方法的一致命名,為團隊提供一致的畫面。你的物件名稱對於系統整體設計的理解和程式碼重用是非常重要的。如果能取一個名字,使它容易猜出來,並且還是正確的,那麼你就是一個能節約時間的人。選擇一個涉及廣泛的物件命名的方法而沒有詳細描述,很難獲取對於系統的認識。 
例如克萊斯勒汽車公司薪水支付系統象生產線那樣被建造了。福特汽車銷售系統象材料清單那樣被構造了。使用基於你本身領域的美麗的比喻,使它為人所知。但是,除非它相當簡單,別選美麗的比喻。 

3 CRC 卡片 
使用CRC(Class,Responsibilities,Collaboration)卡片來作為團隊的設計。CRC卡的最大價值在於允許人們從思考過程模式中脫離出來,更充分的專注於物件技術。CRC卡允許整個專案組對設計做出貢獻。參與系統設計的人越多,能夠收集到的好主意也就越多。 
個別的CRC卡被用來描述物件。物件的類寫在卡的最上邊、責任在左邊下邊編成表,每個責任的右邊是協作的類列表。因為以前CRC會議是大家全力參與的,通常只需要很少的有類名的卡片,實際上沒有寫出完整的卡片,所以,我們說“要寫”。這個例子顯示咖啡製造商問題的一部分。 
CRC會議繼續進行,一些人模擬系統和物件交流,把訊息傳給其他的物件。通過一步步處理弱點,問題很容易地被解決。設計選擇可以通過做建議的模擬實驗迅速地做出決定。 
如果你發現很多人在講話並且移動卡片,立即簡單的限制站著的人數,把卡片移到下一人。當一個人座下的時候,其它的人可以站起來。自由討論會議這項工作,常常發生的情況就像當艱難的問題最終被解答的時候,開發組變得吵鬧一樣。 
CRC卡受到的最大的批評之一是缺乏有記錄的設計。CRC卡使設計看上去顯而易見,所以這通常不需要。應該要求永久性的記錄,每一個類一張卡,每個卡作為文件詳細記錄和保留。一旦預想已經建立和執行,在一段時間內,設計被人記住了。 

4 道釘解決方案 
為了對技術或設計的難題的做出解答,產生道釘解決方案。道釘解決方案是一個探究潛在解決方案的非常簡單的程式。構造一個系統,僅僅專注於檢查出現的問題,忽略所有其它的方面大部分的道釘不會保持的足夠好,所以,要打算扔掉它。使用道釘的目標是減少技術性問題的風險,或者,增加使用者故事 
評估的可靠性。當技術性的困難阻礙系統開發的時候,在這個難題上配備一對開發者,給上一星期或兩個星期的時間以減少潛在的危險。 

5 不要過早地增加功能 
保持系統的整潔,把你猜想的額外的素材以後加入。只有10%的額外素材得到使用,所以你在浪費90%的時間。因為我們明白怎樣增加,或者我們想使系統變得更好,所以我們都被誘惑到現在增加功能而不是以後。現在增加功能,似乎更快。但是,我們需要常常提醒自己:實際上我們不需要它。額外的功能將總是使我們開發變慢,而且浪費我們的資源。把眼光放到將來的需求和額外的適應性上。只關注於今天的進度。 

6 及時地重新構造 
在軟體變的不適用以後很長時間,我們的算機程式設計師仍然保持設計不變。我們繼續使用和重用很長時間沒有維護的程式碼,因為在某種方式下還能繼續工作,我們害怕修改它。但是,這樣去做真的值得嗎?極端程式設計(XP)認為不是這樣。當我們除掉冗餘,刪除未使用的功能,更新陳舊設計的時候,我們進行 
重新構造(refactor)。貫穿整個專案生命週期的重構工作節約了時間,保證了質量。 
為了保持設計的簡單,避免不必要的混亂和複雜,及時重構。保持程式碼的簡潔、明瞭,以便它更容易理解、修改和擴充套件。確認每件事情都被表示一次,並且只一次。結果,花更少的時間產生更好的系統。 
重構有幾個要點。首先,很難,因為你必須能夠放開你想象中的完美的設計,接受你通過重構偶然發現的設計。你必須認識到你想象的設計只是好向導方向,實際上馬上會變得陳舊。 
為了吃到大量的樹葉,毛蟲是一個完美的設計,但是,它不能找到配偶,它在計劃找到它的同類以前,必須把自己變成一隻蝴蝶。放棄你認為系統應該是什麼或不是什麼的想法,試著留心在你面前出現的新的設計。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14639675/viewspace-582367/,如需轉載,請註明出處,否則將追究法律責任。

相關文章