朋的博客

          MySQL資料,Java技術(shù),管理思想,博弈論,Ajax,XP極限編程,H.264,HEVC,HDR
          隨筆 - 86, 文章 - 59, 評論 - 1069, 引用 - 0
          數(shù)據(jù)加載中……

          XP設(shè)計原則(來自:xpchina:BrokenDoor)

          1 簡單是關(guān)鍵 
          簡單的設(shè)計總是花較少的時間完成復(fù)雜的任務(wù)。因此記住要總是做有可能完成的最簡單的事情。如果你發(fā)現(xiàn)一個事情很復(fù)雜,用簡單的事情替換它。與其在復(fù)雜的代碼上消耗更多的時間,還不如用簡單的代碼替換,這樣更快,而且更省事。盡可能使事情簡單化,在執(zhí)行計劃期間,盡可能不增加新的功能。要記住保持簡單的設(shè)計是長期堅持的工作。 

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

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

          4 道釘解決方案 
          為了對技術(shù)或設(shè)計的難題的做出解答,產(chǎn)生道釘解決方案。道釘解決方案是一個探究潛在解決方案的非常簡單的
          程序。構(gòu)造一個系統(tǒng),僅僅專注于檢查出現(xiàn)的問題,忽略所有其它的方面大部分的道釘不會保持的足夠好,所以,要打算扔掉它。使用道釘?shù)哪繕耸菧p少技術(shù)性問題的風(fēng)險,或者,增加用戶故事 
          評估的可靠性。當(dāng)技術(shù)性的困難阻礙
          系統(tǒng)開發(fā)的時候,在這個難題上配備一對開發(fā)者,給上一星期或兩個星期的時間以減少潛在的危險。 

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

          6 及時地重新構(gòu)造 
          在軟件變的不適用以后很長時間,我們的算機
          程序員仍然保持設(shè)計不變。我們繼續(xù)使用和重用很長時間沒有維護的代碼,因為在某種方式下還能繼續(xù)工作,我們害怕修改它。但是,這樣去做真的值得嗎?極端編程(XP)認為不是這樣。當(dāng)我們除掉冗余,刪除未使用的功能,更新陳舊設(shè)計的時候,我們進行 
          重新構(gòu)造(refactor)。貫穿整個項目生命周期的重構(gòu)工作節(jié)約了時間,保證了質(zhì)量。 
          為了保持設(shè)計的簡單,避免不必要的混亂和復(fù)雜,及時重構(gòu)。保持代碼的簡潔、明了,以便它更容易理解、修改和擴展。確認每件事情都被表示一次,并且只一次。結(jié)果,花更少的時間產(chǎn)生更好的
          系統(tǒng)。 
          重構(gòu)有幾個要點。首先,很難,因為你必須能夠放開你想象中的完美的設(shè)計,接受你通過重構(gòu)偶然發(fā)現(xiàn)的設(shè)計。你必須認識到你想象的設(shè)計只是好向?qū)Х较颍瑢嶋H上馬上會變得陳舊。 
          為了吃到大量的樹葉,毛蟲是一個完美的設(shè)計,但是,它不能找到配偶,它在計劃找到它的同類以前,必須把自己變成一只蝴蝶。放棄你認為
          系統(tǒng)應(yīng)該是什么或不是什么的想法,試著留心在你面前出現(xiàn)的新的設(shè)計。

          posted on 2006-02-19 21:07 benchensz 閱讀(739) 評論(0)  編輯  收藏 所屬分類: XP極限編程體驗

          主站蜘蛛池模板: 怀化市| 怀安县| 罗源县| 邹城市| 定安县| 马公市| 宁德市| 景宁| 叙永县| 哈巴河县| 铜陵市| 师宗县| 故城县| 左云县| 敖汉旗| 泗阳县| 霍山县| 黑河市| 嘉荫县| 牡丹江市| 南皮县| 泽库县| 沅江市| 福清市| 平安县| 定远县| 精河县| 耒阳市| 唐山市| 西峡县| 汉沽区| 开江县| 乌拉特前旗| 揭阳市| 大庆市| 桂东县| 永平县| 岫岩| 寻甸| 南投县| 井陉县|