陸陸續(xù)續(xù)又看了一些技術(shù)書(shū),加上最近工作任務(wù)繁重,實(shí)在沒(méi)時(shí)間寫(xiě)技術(shù)類的博文,計(jì)劃斷斷續(xù)續(xù)寫(xiě)一些書(shū)的閱讀評(píng)論。今天先寫(xiě)一本,
最近閱讀的書(shū)并不都是最新的,因?yàn)樾?shū)的確是需要花時(shí)間反復(fù)研讀,仔細(xì)思考的,例如關(guān)于設(shè)計(jì)模式的書(shū)。
Refactoring to Patterns就是這樣一本書(shū),一本相對(duì)來(lái)說(shuō)不算太新的書(shū),一本關(guān)于設(shè)計(jì)模式的書(shū),一本讓人從新開(kāi)始思考模式的書(shū)。我本人強(qiáng)烈推舉大家閱讀。
這本書(shū)剛出來(lái)的時(shí)候,我就一直想好好靜下心來(lái)讀一讀,無(wú)奈工作忙碌,一直沒(méi)有找到機(jī)會(huì)。而且說(shuō)實(shí)話,自己對(duì)設(shè)計(jì)模式也已經(jīng)浸淫數(shù)載,大部分模式都已經(jīng)在實(shí)
際項(xiàng)目中歷練過(guò),不說(shuō)爐火純青,也算得上是熟能生巧。雖然知道這是一本好書(shū),但是心里依然會(huì)泛起陣陣漣漪:just another design
pattern
book,給我一天時(shí)間,我就能把它拿下。沒(méi)想到從開(kāi)始讀到現(xiàn)在已經(jīng)2個(gè)多月了,現(xiàn)在依然會(huì)抽時(shí)間出來(lái)翻看某個(gè)章節(jié),然后結(jié)合實(shí)際問(wèn)題仔細(xì)思考一番。說(shuō)實(shí)
話,設(shè)計(jì)模式真的是個(gè)好東西,是前輩經(jīng)驗(yàn)的積累,但是當(dāng)我們熟練掌握了各種模式之后,就會(huì)遇到兩個(gè)瓶頸性質(zhì)的問(wèn)題:
1. 如何將各類模式融匯貫通。感覺(jué)就像是武俠里面的如何將任督二脈打通,功夫再好,任督二脈不通也非高手,不同的模式相互作用會(huì)產(chǎn)生不同的結(jié)果,不同的模式組合會(huì)產(chǎn)生不同的結(jié)構(gòu),或相互補(bǔ)充相互促進(jìn),或互相影響互相抵制。如何選擇,是個(gè)難題。
2. 如何避免過(guò)度設(shè)計(jì)。模式用熟的朋友可能會(huì)有這種感覺(jué),編程的時(shí)候會(huì)不知不覺(jué)中使用模式進(jìn)行開(kāi)發(fā),模式再好,泛濫使用,過(guò)猶不及。好像武功一般,招式繁多,固然耍起來(lái)好看,但是高手最后的境界往往是無(wú)招勝有招,只要能目的達(dá)到就行了。
第一個(gè)問(wèn)題由于模式之間的組合千變?nèi)f化,而且很多需要結(jié)合實(shí)際問(wèn)題進(jìn)行考慮,大家只能是在實(shí)際項(xiàng)目開(kāi)發(fā)中慢慢體會(huì),慢慢積累經(jīng)驗(yàn)。或許再過(guò)幾年會(huì)有某個(gè)人或者某些人把這些經(jīng)驗(yàn)收集整理,編排出書(shū)。
今天主要想說(shuō)說(shuō)第二個(gè)問(wèn)題:過(guò)度設(shè)計(jì)。 Refactoring to Patterns這本書(shū)就是幫助我們盡量避免過(guò)度設(shè)計(jì)的,這也是我推薦大家看這本書(shū)的初衷。
事實(shí)上,這本書(shū)完全可以看成是極限編程系列里面的一部巨頭著作,其他的重要著作包括TDD,Refactoring,和continuous integration,合起來(lái)應(yīng)該稱為XP四大金剛。
使用XP開(kāi)發(fā)強(qiáng)調(diào)keep it
simple,在編碼的時(shí)候首先用最簡(jiǎn)單的辦法實(shí)現(xiàn)功能(當(dāng)然最好是測(cè)試驅(qū)動(dòng),我會(huì)在評(píng)論下面一本書(shū)是繼續(xù)談測(cè)試驅(qū)動(dòng)),然后在測(cè)試代碼的保護(hù)下對(duì)初級(jí)代
碼進(jìn)行大刀闊斧地重構(gòu),這時(shí)候這些代碼自然最好能夠重構(gòu)成設(shè)計(jì)模式,因?yàn)獒槍?duì)某些特定的問(wèn)題,模式基本上是最佳解決方案。這個(gè)時(shí)候就大家就需要了解如何將
現(xiàn)有的代碼重構(gòu)成為標(biāo)準(zhǔn)的設(shè)計(jì)模式代碼,說(shuō)的嚴(yán)重點(diǎn),這一步關(guān)系到整個(gè)代碼的質(zhì)量,直至引申到真?zhèn)€項(xiàng)目的質(zhì)量。這本書(shū)就針對(duì)這個(gè)關(guān)鍵步驟進(jìn)行了講解,是所
有采用XP方法的開(kāi)發(fā)團(tuán)隊(duì)的必修課之一。
至于書(shū)的內(nèi)容我就盡量簡(jiǎn)單概括一下:本書(shū)基本上覆蓋了重構(gòu)項(xiàng)目中會(huì)遇到的大部分問(wèn)題,并且針對(duì)這些問(wèn)題提供了實(shí)例講解和具體的解決方案。這些方案不單單適
用于使用TDD開(kāi)發(fā)的項(xiàng)目,它們更適用于那些希望通過(guò)重構(gòu)改善現(xiàn)有代碼質(zhì)量的項(xiàng)目。當(dāng)然,重構(gòu)前,千萬(wàn)別嘗試避開(kāi)編寫(xiě)測(cè)試代碼,要牢記,沒(méi)有測(cè)試代碼保
護(hù),最好不要對(duì)代碼做大手術(shù)。書(shū)中的很多例子都值得大家讀完以后結(jié)合自己的實(shí)際項(xiàng)目仔細(xì)思考一番。我個(gè)人很喜歡第7章,已經(jīng)在項(xiàng)目中采用了書(shū)中提到的很多
解決方案,并且對(duì)于某些實(shí)際例子,開(kāi)始嘗試優(yōu)化書(shū)中的方案,希望以后能夠抽出時(shí)間來(lái)寫(xiě)一篇詳細(xì)的博文。
聲明:本文版權(quán)歸作者所有,如需轉(zhuǎn)載請(qǐng)注明出處。