敏捷軟件開(kāi)發(fā) 讀書(shū)筆記 (1)——設(shè)計(jì)的目標(biāo)
軟件設(shè)計(jì)是一種抽象活動(dòng),設(shè)計(jì)所要實(shí)現(xiàn)的是產(chǎn)出代碼。就這一點(diǎn)來(lái)說(shuō),任何人都會(huì)設(shè)計(jì)。但是,正如我們?nèi)粘I钪兴勀慷没蛴H身經(jīng)歷,設(shè)計(jì)有優(yōu)劣之分。
從項(xiàng)目管理的角度去理解,設(shè)計(jì)是為了滿足涉眾(Stakeholders)的需求。顯然,一個(gè)設(shè)計(jì)應(yīng)該滿足客戶對(duì)系統(tǒng)的功能及非功能需求。但單是滿足了這一點(diǎn),并不能稱為一個(gè)好的設(shè)計(jì)。因?yàn)殚_(kāi)發(fā)者同樣屬于涉眾!而開(kāi)發(fā)者的需求又是怎樣的呢?至少,應(yīng)該有以下幾條吧:
- 老板希望軟件交付后,不應(yīng)該有很高的維護(hù)成本。如果開(kāi)發(fā)人員為了維護(hù)而經(jīng)常出差或者加班且久久不能投入新項(xiàng)目,顯然,換了誰(shuí)是老板都不愿意這種事情發(fā)生。
- 開(kāi)發(fā)人員呢?誰(shuí)愿意放棄和家人朋友而拼死拼活在單位加班,總是有這么多麻煩事纏著你,煩不煩哪!
- ……等等
所以,設(shè)計(jì)應(yīng)該盡可能多地照顧到維護(hù)和變更。
為了兼顧各戶滿意和維護(hù)成本,設(shè)計(jì)應(yīng)該不斷挑戰(zhàn)其終極目標(biāo)——松耦合。不管是XP或UP,這個(gè)目標(biāo)都不會(huì)改變。OO設(shè)計(jì)中的五大原則,其根本目的就是降低組件間的耦合度,避免牽一發(fā)則動(dòng)全身的現(xiàn)象發(fā)生。降低耦合度不僅能夠提高軟件內(nèi)在的質(zhì)量,還能大大減少不必要的編譯時(shí)間、減少向版本控制系統(tǒng)提交源碼的網(wǎng)絡(luò)開(kāi)銷……
如何鑒別設(shè)計(jì)的這一指標(biāo)?軟件工程中有專用的度量:CBO(Coupling Between Objects),那是由公式計(jì)算出來(lái)的,也有很多工具支持,值得一試。(聽(tīng)過(guò)幾次李維先生的講座,他經(jīng)常拿Together的度量功能炫耀^_^)
但是,作為一個(gè)開(kāi)發(fā)人員,對(duì)手中的代碼應(yīng)該有適當(dāng)?shù)拿舾行浴.吘梗@些代碼是你親手創(chuàng)造的,誰(shuí)不希望自己的作品得到眾人的贊許?或許能換得一次加薪升職的機(jī)會(huì)^_^ 退一步,這可關(guān)系到寶貴的休息時(shí)間啊。所以,開(kāi)發(fā)者應(yīng)該對(duì)自己的產(chǎn)品有這樣一種意識(shí):及時(shí)修正設(shè)計(jì)中不合理的地方。
敏捷過(guò)程告訴我們:在代碼“有味道”的時(shí)候進(jìn)行重構(gòu)。“有味道”是代碼正在變質(zhì)的標(biāo)志,很遺憾,能夠使代碼保持原味的防腐劑還沒(méi)發(fā)明。為了保證代碼質(zhì)量,及時(shí)重構(gòu)是必要的。這就像在燒烤的時(shí)候?yàn)榱朔乐箍窘梗愕米跔t子前經(jīng)常翻動(dòng)肉塊一樣。
如何聞出代碼的味道?認(rèn)真學(xué)習(xí)一下OO吧,別以為OO很簡(jiǎn)單,就是繼承+封裝+多態(tài),誰(shuí)都會(huì)。即使是書(shū)中記述的五大原則,想要運(yùn)用自如,也得多感覺(jué)感覺(jué)才行。很多時(shí)候,我們不知不覺(jué)就把蛆蟲(chóng)放進(jìn)了代碼中……
好了,下一篇:OO五大原則
posted on 2006-01-06 18:17 GHawk 閱讀(1607) 評(píng)論(3) 編輯 收藏 所屬分類: 學(xué)習(xí)筆記