重構(gòu)

出版時間:2010  出版社:人民郵電出版社  作者:Martin Fowler  頁數(shù):428  譯者:熊節(jié)  
Tag標簽:無  

前言

第一次聽到“重構(gòu)”這個詞,是在2001年10月。在當時,它的思想足以令我感到震撼。軟件自有其美感所在。軟件工程希望建立完美的需求與設(shè)計,按照既有的規(guī)范編寫標準劃一的代碼,這是結(jié)構(gòu)的美;快速迭代和RAD顛覆“全知全能”的神話,用近乎刀劈斧砍(crack)的方式解決問題,在混沌的循環(huán)往復(fù)中實現(xiàn)需求,這是解構(gòu)的美;而Kent Beck與Martin Fowler兩人站在一起,以XP那敏捷而又嚴謹?shù)姆椒ㄕ撗堇[了重構(gòu)的美——我不知道是誰最初把refactoring一詞翻譯為“重構(gòu)”,或許無心插柳,卻成了點睛之筆。 我一直是設(shè)計模式的愛好者。曾經(jīng)在我的思想中,軟件開發(fā)應(yīng)該有一個“理想國”——當然,在這個理想國維持著完美秩序的,不是哲學家,而是模式。設(shè)計模式給我們的,不僅僅是一些具體問題的解決方案,更有追求完美“理型”的渴望。但是,Joshua Kerievsky在那篇著名的《模式與XP》(收錄于《極限編程研究》一書)中明白地指出:在設(shè)計前期使用模式常常導致過度工程(over-engineering)。這是一個殘酷的現(xiàn)實,單憑對完美的追求無法寫出實用的代碼,而“實用”是軟件壓倒一切的要素。從一篇《停止過度工程》開始,Kerievsky撰寫了“Refactoring to Patterns”系列文章。這位猶太人用他民族性的睿智頭腦,敏銳地發(fā)現(xiàn)了軟件的后結(jié)構(gòu)主義道路。而讓設(shè)計模式在飛速變化的網(wǎng)絡(luò)時代重新閃現(xiàn)光輝的,又是重構(gòu)的力量。 在一篇流傳甚廣的帖子里,有人把《重構(gòu)》與《設(shè)計模式》并列為“Java行業(yè)的圣經(jīng)”。在我看來這種并列其實并不準確。實際上,盡管我如此喜愛這本《重構(gòu)》,但自從完成翻譯之后,就再也沒有讀過它。不,不是因為我已經(jīng)對它爛熟于心,而是因為重構(gòu)已經(jīng)變成了我的另一種生活方式,變成了我每天的“面包與黃油”,變成了我們整個團隊的空氣與水,以至于無需再到書中尋找任何“神諭”。而《設(shè)計模式》,我倒是放在手邊時常翻閱,因為總是記得不那么真切。

內(nèi)容概要

本書清晰地揭示了重構(gòu)的過程,解釋了重構(gòu)的原理和最佳實踐方式,并給出了何時以及何地應(yīng)該開始挖掘代碼以求改善。書中給出了70多個可行的重構(gòu),每個重構(gòu)都介紹了一種經(jīng)過驗證的代碼變換手法的動機和技術(shù)。本書提出的重構(gòu)準則將幫助你一次一小步地修改你的代碼,從而減少了開發(fā)過程中的風險?! ”緯m合軟件開發(fā)人員、項目管理人員等閱讀,也可作為高等院校計算機及相關(guān)專業(yè)師生的參考讀物。

作者簡介

作者:(美國)福勒(Martin Fowler) 譯者:熊節(jié)Martin Fowler,世界軟件開發(fā)大師,在面向?qū)ο蠓治鲈O(shè)計、UML、模式、XP和重構(gòu)等領(lǐng)域都有卓越貢獻,現(xiàn)為著名軟件開發(fā)咨詢公司ThoughtWorks的首席科學家。他的多部著作《分析模式》、《UML精粹》和《企業(yè)應(yīng)用架構(gòu)模式》等都已經(jīng)成為膾炙人口的經(jīng)典。熊節(jié),ThoughtWorks中國公司的高級咨詢師、架構(gòu)師和項目經(jīng)理,在大型企業(yè)應(yīng)用及互聯(lián)網(wǎng)應(yīng)用的架構(gòu)和管理方面擁有豐富經(jīng)驗。作為敏捷方法學顧問和重構(gòu)專家,他擁有在各種技術(shù)平臺、編程語言、軟件形態(tài)的項目中實施重構(gòu)的豐富經(jīng)驗,并曾主持極具挑戰(zhàn)性的超大規(guī)模電信軟件系列重構(gòu)工作。

書籍目錄

Chapter 1:Refactoring,a First Example 重構(gòu),第一個例子  The Starting Point 起點  The First Step in Refactoring 重構(gòu)第一步  Decomposing and Redistributing the Statement Method 分解并重組slalemenl方法  Replacing the Conditional Logic on Price Code with Polymorphism 用多態(tài)代替價格條件邏輯代碼  Final Thoughts 結(jié)語 Chapter 2:Principles in Refactoring 重構(gòu)原則  Defining Refactoring 何謂重構(gòu)  Why Should You Refactor? 為何重構(gòu)  When Should You Refactor? 何時重構(gòu)  What Do I Tell My Manager? 怎樣說服經(jīng)理  Problems with Refactoring 重構(gòu)的問題  Refactoring and Design 重構(gòu)與設(shè)計  Refactoring and Performance 重構(gòu)與性能  Where Did Refactoring Come From? 重構(gòu)的起源 Chapter 3:Bad Smells in Code(by Kent Beck and Martin Fowler) 代碼壞昧  Duplicated Code 重復(fù)代碼  Long Method 過長方法  Large Class 過長類  Long Parameter List 過長參數(shù)列表  Divergent Change 發(fā)散式變化  Shotgun Surgery 霰彈式修改  Feature Envy 特性依戀  Data Clumps 數(shù)據(jù)泥團  Primitive Obsession 基本類型偏執(zhí)  Switch Statements switch語句  Parallel Inheritance Hierarchies 平行繼承體系  Lazy Class 冗余類  Speculative Generality 理論上的一般性  Temporary Field 臨時字段  Message Chains 消息鏈  Middle Man 中間人  Inappropriate Intimacy 過度親密  Alternative Classes with Different Interfaces 接口不同的等效類   Incomplete Library Class 不完整的庫類  Data Class 數(shù)據(jù)類  Refused Bequest 拒絕繼承  Comments 注釋過多 Chapter 4:Building Tests 構(gòu)建測試  The Value of Self-testing Code 自測試代碼的重要性  The JUnit Testing Framework Junit測試框架  Adding More Tests 添加更多測試 Chapter 5:Toward a Catalog of Refactorings 重構(gòu)目錄  Format of the Refactorings 重構(gòu)描述的格式  Finding References 尋找引用  How Mature Are These Refactorings? 這些重構(gòu)的成熟度如何  Chapter 6:Composing Methods 組合方法  Extract Method 提取方法  Inline Method 內(nèi)聯(lián)方法  Inline Temp 內(nèi)聯(lián)臨時變量  *Replace Temp with Query 用查詢方法代替臨時變量  Introduce Explaining Variable 引入解釋性變量  Split Temporary Variable 分離臨時變量  *Remove Assignments to Parameters 去除參數(shù)賦值  Replace Method with Method Object 用方法對象代替方法  Substitute Algorithm 替換算法 Chapter 7:Moving Features Between Objects 在對象之間移動特性   *Move Method 移動方法  Move Field 移動字段  Extract Class 提取類  Inline Class 內(nèi)聯(lián)類  Hide Delegate 隱藏委托類  Remove Middle Man 去除中間人  Introduce Foreign Method 引入外加方法  *Introduce Local Extension 引入本地擴展類 Chapter 8:Organizing Data 組織數(shù)據(jù)  Self Encapsulate Field 自封裝字段  Replace Data Value with Object 用對象代替數(shù)據(jù)值  Change Value to Reference 將值對象改為引用對象  Change Reference to Value 將引用對象改為值對象  Replace Array with Object 用對象代替數(shù)組  Duplicate Observed Data 重復(fù)被觀察數(shù)據(jù)  *Change Unidirectional Associationto Bidirectional 將單向關(guān)聯(lián)改為雙向  Change Bidirectional Association to Unidirectional 將雙向關(guān)聯(lián)改為單向  *Replace Magic Number with Symbolic Constant 用字面常量代替魔數(shù)  Encapsulate Field 封裝字段  Encapsulate Collection 封裝集合  Replace Record with Data Class 用數(shù)據(jù)類代替記錄  *ReplaceType Code with Class 用類代替類型碼  Replace Type Code with Subclasses 用子類代替類型碼  Replace Type Code with State/Strategy用State/Strategy 代替類型碼  Replace Subclass with Fields 用字段代替子類 Chapter 9:Simplifying Conditional Expressions 簡化條件語句  Decompose Conditional 分解條件語句  Consolidate Conditional Expression 合并條件語句  Consolidate Duplicate Conditional Fragments 合并重復(fù)的條件片段  Remove Control Flag 去除控制標志  Replace Nested Conditional with Guard Clauses 用守衛(wèi)語句代替嵌套條件語句  Replace Conditional with Polymorphism 用多態(tài)代替條件語句  Introduce Null Object 引入Null對象  Introduce Assertion 引入斷言 Chapter 10:Making Method Calls Simpler 簡化方法調(diào)用  Rename Method 重命名方法  Add Parameter 添加參數(shù)  Remove Parameter 去除參數(shù)  Separate query from Modifier 將查詢方法與修改方法分離  Parameterize Method 參數(shù)化方法  Replace Parameter with Explicit Methods 用顯式方法代替參數(shù)   Preserve Whole Object 保持對象完整  Replace Parameter with Method 用方法代替參數(shù)  Introduce Parameter Object 引入?yún)?shù)對象  Remove Setting Method 去除設(shè)置方法  Hide Method 隱藏方法  Replace Constructor with Factory Method 用工廠方法代替構(gòu)造器  Encapsulate Downcast 封裝向下轉(zhuǎn)型  Replace Error Code with Exception 用異常代替錯誤碼  Replace Exception with Test 用測試代替異?!hapter 11:Dealing with Generalization 處理泛化關(guān)系  Pull Up Field 上移字段  Pull UP Method 上移方法  Pull Up Constructor Body 上移構(gòu)造器主體  Push Down Method 下移方法  Push Down Field 下移字段  Extract Subclass 提取子類  Extract Superclass 提取超類  Extract Interface 提取接口  Collapse Hierarchy 合并繼承層次  Form Template Method 形成Template Method  Replace Inheritance with Delegation 用委托代替繼承  Replace Delegation with Inheritance 用繼承代替委托 Chapter 12:Big Refactorings(by Kent Beck and Martin Fowler) 大型重構(gòu)  Tease Apart Inheritance 分解繼承層次  Convert Procedural Design to Objects 將過程式設(shè)計轉(zhuǎn)換為面向?qū)ο蟆 eparate Domain from Presentation 將領(lǐng)域邏輯與表現(xiàn)分離  Extract Hierarchy 提取繼承層次 Chapter 13:Refactoring,Reuse,and Reality(by William Opdyke) 重構(gòu),復(fù)用與現(xiàn)實  A Reality Check 現(xiàn)實的檢驗  Whv Are Developers Reluctant to Refactor Their Programs? 開發(fā)人員為何不愿重構(gòu)程序  A Reality Check(Revisited) 再談現(xiàn)實的檢驗  Resources and References for Refactoring 重構(gòu)的資源和參考文獻  Implications Regarding Software Reuse and Technology Transfer 對軟件復(fù)用與技術(shù)傳播的意義  A Final Note 結(jié)語  References 參考文獻 Chapter 14:Refactoring Tools(by Don Roberts and John Brant) 重構(gòu)工具  Refactoring with a Tool 使用工具重構(gòu)  Technical Criteria for a Refactoring Tool 重構(gòu)工具的技術(shù)標準  Practical Criteria for a Refactoring Tool 重構(gòu)工具的實用標準  Wrap Up 結(jié)語 Chapter 15:Putting It All Together(by Kent Beck) 集大成 References參考文獻 List of Soundbites 要點列表 Updates 更新內(nèi)容 Index 索引

章節(jié)摘錄

插圖:現(xiàn)在,重構(gòu)的處境也是如此。我們知道重構(gòu)的好處,我們知道重構(gòu)可以給我們的工作帶來立竿見影的改變。但是我們還沒有獲得足夠的經(jīng)驗,我們還看不到它的局限性。這一節(jié)比我希望的要短。暫且如此吧。隨著更多人學會重構(gòu)技巧,我們也將對它有更多了解。對你而言這意味著:雖然我堅決認為你應(yīng)該嘗試一下重構(gòu),獲得它所提供的利益,但與此同時,你也應(yīng)該時時監(jiān)控其過程,注意尋找重構(gòu)可能引入的問題。請讓我們知道你所遭遇的問題。隨著對重構(gòu)的了解日益增多,我們將找出更多解決辦法,并清楚知道哪些問題是真正難以解決的。數(shù)據(jù)庫重構(gòu)經(jīng)常出問題的一個領(lǐng)域就是數(shù)據(jù)庫。絕大多數(shù)商用程序都與它們背后的數(shù)據(jù)庫結(jié)構(gòu)緊密耦合在一起,這也是數(shù)據(jù)庫結(jié)構(gòu)如此難以修改的原因之一。另一個原因是數(shù)據(jù)遷移(migration)。就算你非常小心地將系統(tǒng)分層,將數(shù)據(jù)庫結(jié)構(gòu)和對象模型間的依賴降至最低,但數(shù)據(jù)庫結(jié)構(gòu)的改變還是讓你不得不遷移所有數(shù)據(jù),這可能是件漫長而煩瑣的工作。在非對象數(shù)據(jù)庫中,解決這個問題的辦法之一就是:在對象模型和數(shù)據(jù)庫模型之間插入一個分隔層,這就可以隔離兩個模型各自的變化。升級某一模型時無需同時升級另一模型,只需升級上述的分隔層即可。這樣的分隔層會增加系統(tǒng)復(fù)雜度,但可以給你帶來很大的靈活度。如果你同時擁有多個數(shù)據(jù)庫,或如果數(shù)據(jù)庫模型較為復(fù)雜使你難以控制,那么即使不進行重構(gòu),這分隔層也是很重要的。你無需一開始就插入分隔層,可以在發(fā)現(xiàn)對象模型變得不穩(wěn)定時再產(chǎn)生它,這樣你就可以為你的改變找到最好的平衡點。對開發(fā)者而言,對象數(shù)據(jù)庫既有幫助也有妨礙。某些面向?qū)ο髷?shù)據(jù)庫提供不同版本的對象之間的自動遷移功能,這減少了數(shù)據(jù)遷移時的工作量,但還是會損失一定時間。如果各數(shù)據(jù)庫之間的數(shù)據(jù)遷移并非自動進行,你就必須自行完成遷移工作,這個工作量可是很大的。這種情況下你必須更加留神類中的數(shù)據(jù)結(jié)構(gòu)變化。你仍然可以放心將類的行為轉(zhuǎn)移過去,但轉(zhuǎn)移字段時就必須格外小心。數(shù)據(jù)尚未被轉(zhuǎn)移前你就得先運用訪問函數(shù)造成“數(shù)據(jù)已經(jīng)轉(zhuǎn)移”的假象。一旦你確定知道數(shù)據(jù)應(yīng)該放在何處,就可以一次性地將數(shù)據(jù)遷移過去。

編輯推薦

重構(gòu),一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是《重構(gòu):改善既有代碼的設(shè)計》原版的出版,使重構(gòu)終于從編程高手們的小圈子走出,成為眾多普通程序員日常開發(fā)工作中不可或缺的一部分?!吨貥?gòu):改善既有代碼的設(shè)計》也因此成為與《設(shè)計模式》齊名的經(jīng)典著作,被譯為中、德、俄、日等眾多語言,在世界范圍內(nèi)暢銷不衰?!吨貥?gòu):改善既有代碼的設(shè)計》凝聚了軟件開發(fā)社區(qū)專家多年摸索而獲得的寶貴經(jīng)驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構(gòu)本身,業(yè)界對重構(gòu)的理解,還是開發(fā)工具對重構(gòu)的支持力度,都與《重構(gòu):改善既有代碼的設(shè)計》最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反復(fù)咀嚼,而且往往能夠常讀常新。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    重構(gòu) PDF格式下載


用戶評論 (總計200條)

 
 

  •   重構(gòu):改善既有代碼的設(shè)計(軟件開發(fā)的不朽經(jīng)典) 經(jīng)典書籍
  •   在當下的軟件開發(fā)環(huán)境中,經(jīng)常會使用他人的成果,而這些代碼也許能用,但未必合乎規(guī)范,容易修改復(fù)用。這樣的情況下,重構(gòu)的技術(shù)手段,就成了救命稻草。重構(gòu)反對推倒重來,提倡漸進改變。因為代碼不是食物,怎么會腐敗呢?只要你有技術(shù)能力,隨便改。
  •     首先,你應(yīng)該關(guān)注的是提高書寫干凈,毫不含糊的,可維護代碼的能力。 下列書籍應(yīng)該大大有助于您:
      
      測試驅(qū)動開發(fā)(肯特·貝克)
      重構(gòu)(馬丁·福勒)
      實現(xiàn)模式(肯特·貝克)
      代碼大全:第二版(史蒂夫·麥康奈爾)
      Working Effectively With Legacy Code(Michael Feathers)
      Clean Code (Robert C. Martin)
      上述的讀書順序可能使有些人感到驚訝,但我敢打賭,這是最有效的閱讀順序。
  •   重構(gòu)在大型項目中越來越重要,即使是普通的程序員也應(yīng)該隨時保持自己代碼的整潔度,維持高質(zhì)量的代碼并不是一件簡單的事,需要對OO思想的深刻理解和清晰的結(jié)構(gòu)劃分
  •   這本書就不用多說了, Martin Fowler的經(jīng)典之作,雖然是用c++的來演說的,但是對于面向?qū)ο?,以及架?gòu)的設(shè)計闡述得很好,應(yīng)該是每個立志成為優(yōu)秀程序員架構(gòu)師的必備書籍。
    感覺書中作者對于程序的風格、設(shè)計要求幾乎已經(jīng)到了偏執(zhí)的程度,他對代碼的整理不像是一種技術(shù),更像是一種藝術(shù),那種對代碼的審視角度更多地像是從一種工程美學去看,拒絕任何一點瑕疵、缺憾、笨拙、丑陋、bad smell,要求百分百的優(yōu)雅、精致、完美。這不正像一個藝術(shù)家對自己作品至善至美的要求嗎?而且他所列出的技術(shù)上的bad smell恰恰也是我平時看上去感覺別扭、丑陋、笨拙的地方,這種工程與美學、技術(shù)與藝術(shù)的相通,也許就是事物同一性的一種體現(xiàn)吧?
  •   我認為的閱讀順序應(yīng)該是:Java編程思想-Junit(測試)-UML-設(shè)計模式-重構(gòu)-重構(gòu)與模式~
  •   堪稱經(jīng)典的一本書。挺喜歡的。例子很多。很細。反應(yīng)現(xiàn)實軟件開發(fā)存在的問題與如何重構(gòu)。
  •   本書介紹了重構(gòu)的一些知識,對我非常有幫助,對于一些已有代碼的改善起到了巨大的作用
  •   重構(gòu)是軟件開發(fā)迭代過程中不可或缺的一步,很贊的一本書
  •   最近在接觸一個很老的系統(tǒng),老板一直希望將代碼處理的更完善,想到重構(gòu)系統(tǒng),可是又沒有這方面的經(jīng)驗,網(wǎng)上查了下找到這本書,非常不錯的書,值得一讀,在重構(gòu)中可以讓一個程序員學到更多的知識,強烈推薦!
  •   作為一名程序員,以前很少在代碼的重構(gòu)上花費很大的力氣,但是這也導致自己總是感覺提升很慢卻找不到原因,讀了這本書之后才有一種茅塞頓開的感覺,才真正的找到問題的根源,在這里作者循序漸進的講解,讓我如夢初醒,我自己也感覺到作為一名程序員自己的路還很長,自己要學的還很多。
  •   稍微看了一些,這本書對于程序員來說很值得看,里面講了很多代碼重構(gòu)的一些建議,對于提升代碼的質(zhì)量還是有很大幫助的!
  •   重構(gòu),改善代碼的好書
  •   買這本書的時候是沖著它的頂頂大名去的,看完之后果然受益匪淺,打算在需要的時候再讀幾遍。雖然現(xiàn)在的項目代碼有些“壞味道”,但是現(xiàn)在不是重構(gòu)的良好時機。這也是遵循書中所提到的“兩頂帽子”原則。如果沒有把握去重構(gòu)的話,就不要重構(gòu)。但是總體來說,這本書還是讓我開拓了眼界,增長了見識。唯一不足的地方就是翻譯,有點中國式的教條~~
  •   這本書讓我學習了如何重構(gòu),現(xiàn)在的項目有大量冗余的代碼,這本書給我?guī)椭艽?。非常贊的一本?/li>
  •   大師的作品,很不錯的代碼重構(gòu)類書籍
  •   代碼重構(gòu),編碼人員必備
  •   對于想學習重構(gòu)的學習者來說是一本必不可少的書,看完后,編寫代碼規(guī)范很多,很喜歡!
  •   雖然著重點是代碼重構(gòu),不過對于新手也是一本好書,告訴你怎樣的代碼是壞代碼,怎么寫才是好代碼
  •   代碼整理: 重構(gòu)好書籍
  •   重構(gòu),從事代碼工作的人,在經(jīng)歷編碼的初階邁向下一境界的一道坎~ 希望能夠繼續(xù)在這條路上走下去,走的更好,走出精彩!
  •   早就接觸到了這本書,以前都是隨便看看。沒認為他有多重要。 看完設(shè)計模式,覺得,自己就掌握了一切,最后發(fā)覺,自己越來越迷茫。 大的框架和原理是比較明白。 但是小細節(jié),就是不斷的重構(gòu)。自己真的力不從心,無從下手。 再回頭看這本書,感覺不錯。
  •   重構(gòu)這本書真的是不朽經(jīng)典,估計成書于2000年以前,到現(xiàn)在還流行,足見經(jīng)典;clr via C#,深入講解,專業(yè)性太強了
  •   書不錯,以前看了設(shè)計模式,現(xiàn)在來看重構(gòu),感覺少了點什么,比如依賴注入,我現(xiàn)在還沒在書里面找到這個設(shè)計模式應(yīng)該怎么使用。
  •   確實是不朽經(jīng)典,我們很多同事都購買了,作為參考書來進行重構(gòu)軟件和學習討論。
  •   重構(gòu)和設(shè)計模式是java的兩本圣經(jīng),ITeye創(chuàng)始人范凱強力推薦此書。這本書對你的影響是潛移默化的,經(jīng)常讀一讀對自己很有好處
  •   剛收到書,摸起來紙張不錯,就是每頁的文字比較少啊,既然是經(jīng)典就向經(jīng)典學習,計劃在兩個星期看完!手頭上正好有個需要重構(gòu)的項目,邊看邊實踐!
  •   重構(gòu),現(xiàn)在寫軟件一定要注意重構(gòu),還要結(jié)合設(shè)計模式來學習
  •   我現(xiàn)在做的個項目是將原有的系統(tǒng)進行升級,因為需要在原有的系統(tǒng)上進行修改,這本書給了一些重構(gòu)的思想和方法。比如說,當現(xiàn)有的程序結(jié)構(gòu)不再適合現(xiàn)有的功能,我們就來重構(gòu)現(xiàn)有的結(jié)果,讓他適應(yīng)新的需求,雖然比較麻煩,但是這好處很多,一是方便理解,二是好的結(jié)構(gòu)提供了更好的擴展。
  •   很多地方都用的到,例如經(jīng)典的測試驅(qū)動開發(fā)都用重構(gòu)。在eclipse插件中有部分集成的功能
  •   這本書是重構(gòu)中的經(jīng)典篇章
  •   主要是講重構(gòu)和模式一類的,新手可能看不懂,不過多看幾遍就好了
  •   讀完此書,你會覺得重構(gòu)原來普通程序員也可以!
  •   經(jīng)典就是經(jīng)典,很適合放到身邊,有重構(gòu)要求時就翻一翻。
  •   一個程序員可以不學開發(fā)語言,但不能不學習重構(gòu)。
  •   重構(gòu)是每個程序員肯定會用到的。
  •   軟件開發(fā)的不朽經(jīng)典+設(shè)計模式,學到很多東西
  •   這是一本關(guān)于重構(gòu)的很經(jīng)典的書,不可不讀。
  •   其實,我現(xiàn)在是做C++,但是買了這本java的重構(gòu)的書,可見他有多么經(jīng)典。。。
  •   重構(gòu)的經(jīng)典
  •   重構(gòu)--做過的程序員才是好程序員
    重構(gòu)--讀過的經(jīng)理才能做好經(jīng)理
    重構(gòu)--享受過的軟件才是好軟件
  •   指導重構(gòu) 可以反思設(shè)計
  •   很不錯,對學習重構(gòu)有很大幫助
  •   非常好的一本書,其實是原2003年的再版 區(qū)別不大,此版本改為侯杰一人翻譯,此書對重構(gòu)的思想由淺入深
  •   好書,立足于細節(jié),不光是重構(gòu),平時寫新代碼時也可以參考
  •   特別實用的一本重構(gòu)方面的書
  •   很好,一直放桌上,有時間就翻翻,作者對重構(gòu)簡直是無以復(fù)加了
  •   重構(gòu)的方法寫的很透徹
  •   對重構(gòu)的描述很全很詳細,大量的重構(gòu)方法值得學習。。
  •   真正理解重構(gòu)的意義就從它開始了
  •   不用怕,重構(gòu)就好了。
  •   很詳細的重構(gòu)思維
  •   大致的看了下,感覺比較好,之前自己重構(gòu)比較混亂。
  •   重構(gòu)方面的好書
  •   重構(gòu)是我們coder不得不做的,而且是必須要努力、經(jīng)常去做的!
  •   (軟件開發(fā)的不朽經(jīng)典
  •   喜歡這種經(jīng)典的書,有很多的java代碼例子,如果有設(shè)計模式的基礎(chǔ),結(jié)合來看的話效果更好!
  •   如果你很不幸是個程序員,如果你更不幸是個面向過程的開發(fā)人員,如果你十分不幸你的東家之前的代碼寫的非常糟亂。。。你懂的
  •   如何改善既有代碼,從外觀到設(shè)計。
  •   這本書幫助我們重新修改自己的代碼,不僅僅是提高效率,也是在幫助提高整個項目的開發(fā)效率,并有助于后續(xù)的可能的開發(fā)
  •   這是任何一個有幾年代碼經(jīng)驗的人都應(yīng)該讀的書,書中教給我們的一些方法讓我們更清晰地了解設(shè)計的精髓,以及如何在設(shè)計完成之后繼續(xù)改進它的設(shè)計。
    對所有即將寫代碼,正在寫代碼,或?qū)戇^代碼的人,這本書都有非常大的借鑒意義。
  •   軟件開發(fā)的經(jīng)典之作!
  •   適合想要改善代碼質(zhì)量,熟悉OO思想的人使用
  •   雖然是做****開發(fā)的,語言是不一樣的,但軟件開發(fā)的思想是相通的,所以我買了這本書。現(xiàn)在正在讀。感覺不錯。
  •   本書比較適合有一定代碼積累量的程序員,如果沒寫過多少代碼對里面的一些東西可能體會不到。
  •   非常值得學習并付諸工作實踐,能夠大大提高軟件開發(fā)效率。
  •   大致看了幾個章節(jié). . 確實很經(jīng)典,對代碼優(yōu)化很有幫助.
    很不錯..
  •   久聞此書大名,今日一讀,果然非同凡響。

    通過這本書學到了很多的編碼思想,對我寫代碼影響非常大。看了這本書后,更注重代碼的可維護性和可擴展性了。

    不是吹,這本書,是我近年來收獲最大的一本計算機書之一。

    強烈推薦。

    另外,這本書雖然是以Java語言描述的,但無關(guān)緊要,我現(xiàn)在玩的都是C++,也不因此影響閱讀。
  •   書中很多總結(jié)對代碼設(shè)計和編寫人員很適用,都是平時容易忽視的細節(jié),看了才知道自己有不少地方都需要提高和改進。很好,推薦!
  •   書很經(jīng)典,尤其對寫過一些代碼后,對照書所講思考寫過代碼,收獲會更大。
  •   大致看了30多頁..
    的確簡單易懂
    還有..我感覺這本書壓縮一下..真美多少頁...
    里面好多代碼重復(fù).只是一個類稍做修改.就把整個類再粘貼一遍.而且行間距.很大.
    不過正是因為這樣才更易于閱讀吧

    這本書就像太極拳.異懂.難通
  •   經(jīng)典中的經(jīng)典,不錯不錯,可以從更高層的角度看待自已的代碼。
  •   不錯,一代經(jīng)典,代碼用Java寫的,剛好適用。
  •   這本書確實包含了很多關(guān)于編程上的好的知道,
    有興趣的人可以看看:代碼整潔之道,代碼大全
  •   書的內(nèi)容以java為語言講述如何避免代碼的重復(fù)修改。
  •   很值得推薦的一本書,Java的代碼示例,但是就算不會Java應(yīng)該也能看看,畢竟思想才是最重要的!
  •   書中的代碼優(yōu)化方式真是讓我受益匪淺,學習
  •   開發(fā)人員必備,看了寫代碼更直觀
  •   么有看,就是翻了翻,書不錯,紙質(zhì)什么的都挺好的,需要經(jīng)常寫代碼的人應(yīng)該會很喜歡
  •   普通程序員進階到高手必須修煉的秘籍
  •   雖然看的有些迷糊,但是頗有感覺,設(shè)計代碼的能力又提高了.
  •   曾幾何時,沉淪在“腐爛”的代碼**堆中,不知何處是我前進的方向。發(fā)現(xiàn)了這本書,它給我脫離苦海的信心和方法。我現(xiàn)在就在踐行如下原則:“永遠保持你走時比來時更干凈”。靠什么達到呢?這本書會給你答案??赡苣銜量啵灰獔猿?,你會笑到最后。
  •   這本書沒什么說的,要想寫出整潔,邏輯性強的代碼。你可以看看,保你受益匪淺。
  •   這書是教人怎么寫很美的代碼
  •   10行代碼一頁,這書很浪費好紙張啊
  •   優(yōu)化代碼,提高代碼質(zhì)量,很優(yōu)秀的書
  •   這本書很不錯,跟國外的數(shù)據(jù)思維模式上可能不太一樣,讀的過程中明顯能感覺的是中國人寫的書籍,但是可能因為都是中國人的思維模式,讀起來更容易理解,國外的書可能更注重思想,這本書則更注重于現(xiàn)實工作中的實踐和應(yīng)用??偟膩頃脮?,值得入手
  •   除了示例代碼是Java不太喜歡以外,都很棒。
  •   代碼即是藝術(shù)??此坪唵?,奧妙無窮
  •   當你面對龐大而復(fù)雜的代碼無法下手的時候你可以靜下心讀一讀,會有很大的收獲。
  •   代碼潔癖者專用
  •   學習java一段時間之后對自己的代碼進行反思~
  •   里面的代碼是Java寫的。。還以為是C#版的,還好大部分代碼相通
  •   在會寫代碼的基礎(chǔ)上,寫出好的代碼,你值得擁有
  •   規(guī)范代碼、提高代碼編寫能力
  •   看過后,挺不錯的,就是里面代碼重復(fù)過多,也不知道是不是為此增加頁數(shù),還是其他的。
  •   寫的很好,代碼占的篇幅太大
  •   不錯的質(zhì)量,代碼布局看上去讓人比較舒服,內(nèi)容當然OK了
  •   設(shè)計模式齊名的經(jīng)典之作。
  •   經(jīng)典之作,不朽傳奇,書的質(zhì)量很好,正版書。。。。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7