譯本重構(gòu)讀后感
網(wǎng)上對(duì)于這本書(shū)的評(píng)論很熱鬧,在讀《java編程思想》感覺(jué)有點(diǎn)疲倦的時(shí)候,我拿起了這本書(shū)。這本書(shū)作者是martin fowler,而且封面上印著"與《設(shè)計(jì)模式》齊名的經(jīng)典巨著","《設(shè)計(jì)模式》作者為本書(shū)作序","超過(guò)70種行之有效的重構(gòu)方法"等宣傳語(yǔ)。對(duì)于這些宣傳語(yǔ)我第一個(gè)感覺(jué)是宣傳的噱頭,martin沒(méi)有必要通過(guò)本書(shū)與《設(shè)計(jì)模式》的比較顯示自己的身價(jià)。另外由于文中常常有交叉引用,可能侯捷/熊節(jié)采用頁(yè)頁(yè)對(duì)譯,顯得每頁(yè)留白很多。
開(kāi)篇作者并沒(méi)有像常見(jiàn)的那樣為"重構(gòu)"正名溯源,而是操刀剖析了一個(gè)出租影片程序的案例。原來(lái)的代碼能夠滿(mǎn)足當(dāng)前需求的功能,但是面臨著眼前需要增加新功能打印html格式,日后可能變更影片分類(lèi)的長(zhǎng)遠(yuǎn)需求。在變更前,作者對(duì)于最初的程序畫(huà)出了問(wèn)號(hào)。然后按照每次謹(jǐn)慎地移動(dòng)一小步,頻繁地測(cè)試的原則,對(duì)原來(lái)的代碼實(shí)施重構(gòu)。小步挪動(dòng)以后,擦亮了窗戶(hù),對(duì)于程序的結(jié)構(gòu)看得更遠(yuǎn)了,繼續(xù)微調(diào)。終于在最后解決了該程序面臨的問(wèn)題,增加了程序的靈活性,但是也使得代碼變得更加復(fù)雜了,減小了函數(shù)的功能粒度。似乎是微不足道的量變,產(chǎn)生了質(zhì)變。代碼在沒(méi)有改頭換面的前提下進(jìn)行了脫胎換骨。
第二章作者開(kāi)始步入常規(guī),解釋關(guān)于refactoring有關(guān)的what(重構(gòu)是什么),why(為什么要重構(gòu)),when(什么時(shí)候進(jìn)行重構(gòu)),how (如何提出重溝)問(wèn)題。作者也解釋了重構(gòu)面臨的難題。我感興趣的`是重構(gòu)和設(shè)計(jì),性能比較的兩節(jié)。通過(guò)對(duì)oop的學(xué)習(xí),我逐漸理解和接受了項(xiàng)目逐步培養(yǎng),成長(zhǎng)的觀(guān)念。原來(lái)我一直按照瀑布式開(kāi)發(fā),在項(xiàng)目后期總出現(xiàn)一些當(dāng)初設(shè)計(jì)想象不到的情況,開(kāi)始我總歸結(jié)于自己經(jīng)驗(yàn)不足,需求分析做的不夠深入細(xì)致。接觸到xp 和重構(gòu)以后,心中有一種豁然開(kāi)朗的感覺(jué)。但是我想重構(gòu)與瀑布式并不是截然對(duì)立的,而是項(xiàng)目開(kāi)發(fā)過(guò)程中兩個(gè)側(cè)面。在我所參與的動(dòng)輒上百人參與,軟硬同吃的項(xiàng)目中完全采用xp是不可思議的,兩者必須結(jié)合使用。作者對(duì)于程序性能的問(wèn)題的觀(guān)點(diǎn)也讓我耳目一新,他提出只有在需要的時(shí)候才著眼性能,而且通過(guò)測(cè)試而不是事前分析的方式尋找性能問(wèn)題的瓶頸在那里。
接著作者用22種代碼中的壞味道描繪了需要重構(gòu)的種種征兆。這一章和第6章一樣,我讀得很"流",感覺(jué)內(nèi)容很容易理解,但是讀完以后腦海中印象卻不深刻。尤其是具體的重構(gòu)方法,有時(shí)候感覺(jué)作者挪動(dòng)的步伐太小了,太謹(jǐn)慎了。也許像侯捷在序言中所說(shuō)的,是日后計(jì)算機(jī)自動(dòng)完成的步驟;也許是我看別人做事自己站著說(shuō)話(huà)不腰疼,以后跌了大跟頭才能知道其中的真意吧。
uml class diagram 和 junit是順利進(jìn)行重構(gòu)的左右雙翼。在第1章中的那些unl類(lèi)圖,我認(rèn)為只是對(duì)代碼進(jìn)行重構(gòu)結(jié)果的解釋?zhuān)⒉皇峭ㄟ^(guò)分析unl類(lèi)圖發(fā)現(xiàn)需要重構(gòu)的跡象。如果從項(xiàng)目整體或者多個(gè)類(lèi)的關(guān)系入手進(jìn)行重構(gòu)的話(huà),uml類(lèi)圖可能能夠負(fù)擔(dān)行軍路線(xiàn)圖的重?fù)?dān)。(但是你為什么要等到這時(shí)候才進(jìn)行重構(gòu)呢?)。而junit是進(jìn)行頻繁測(cè)試的依仗,只有實(shí)現(xiàn)測(cè)試的自動(dòng)化,才可能隨時(shí)的重構(gòu)。作者用第4章一章的篇幅詳細(xì)介紹了測(cè)試的觀(guān)點(diǎn),junit測(cè)試構(gòu)架。
從名為“重新組織你的函數(shù)”的第6章開(kāi)始,作者詳細(xì)介紹了每一種重構(gòu)方法。對(duì)于每種方法,按照名稱(chēng)(name)、概要(summary)、動(dòng)機(jī)(motivation)、做法(mechanics)、范例(examples)的格式進(jìn)行。這么多模式,很難記憶完全,也沒(méi)有必要。我想如果理解了重構(gòu)的概念和原理,具體的模式可以像字典一樣平時(shí)多翻翻,多琢磨。具體做的時(shí)候沒(méi)有必要非要搞清楚自己使用的是哪一種模式,然后嚴(yán)格按照書(shū)上的步驟照貓畫(huà)虎。無(wú)招勝有招,把重構(gòu)融入到自己平時(shí)的編程過(guò)程中才是真正掌握了。
這本書(shū)翻譯得很流暢,我在不知不覺(jué)中被文中生動(dòng)自然的語(yǔ)言帶到桃源深處,領(lǐng)略別樣風(fēng)景。至于網(wǎng)友常常爭(zhēng)論的翻譯,用詞等問(wèn)題,我并不在意,也絲毫沒(méi)有構(gòu)成我閱讀的障礙。我關(guān)注的是原理,技術(shù)本身,而不是某個(gè)詞的譯法、用法,因?yàn)槲抑馈皞(gè)別代碼的優(yōu)化調(diào)整,對(duì)整個(gè)系統(tǒng)毫無(wú)意義”。
【譯本重構(gòu)讀后感】相關(guān)文章:
哈姆雷特梁實(shí)秋譯本09-02
伊索寓言故事譯本03-14
魯迅《野草》英文譯本序10-17
《語(yǔ)教學(xué)內(nèi)容重構(gòu)》讀后感范文07-01
《老人與!分凶g本批評(píng)11-29
重構(gòu)高效課堂讀書(shū)心得03-26