重構(gòu)

出版時(shí)間:2008-2  出版社:人民郵電  作者:福勒  頁(yè)數(shù):469  字?jǐn)?shù):590000  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

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

作者簡(jiǎn)介

Martin Fowler世界軟件開(kāi)發(fā)大師,在面向?qū)ο蠓治鲈O(shè)計(jì)、UML、模式、XP和重構(gòu)等領(lǐng)域都有卓越貢獻(xiàn),現(xiàn)為著名軟件開(kāi)發(fā)咨詢(xún)公司ThoughtWorks的首席科學(xué)家。他的多部著作《分析模式》、《UML精粹》和《企業(yè)應(yīng)用架構(gòu)模式》等都已經(jīng)成為膾灸人口的經(jīng)典。

書(shū)籍目錄

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

編輯推薦

  軟件開(kāi)發(fā)的不朽經(jīng)典,生動(dòng)闡述重構(gòu)原理和具體做法,新添大量重構(gòu)方法,使你與時(shí)供進(jìn),豐富的詞匯和背景注釋?zhuān)爿p松讀經(jīng)典?! ≈貥?gòu),一言以蔽之,就是在不改變外都行為的前提下,有條不紊地改善代碼。多年來(lái),正是本書(shū)原版的出版,使重構(gòu)終于從編程高手們的小圈子走出,成為眾多普通程序員日常開(kāi)發(fā)工作中不可或缺的一部分。而本書(shū)也因此成為與《設(shè)計(jì)模式》齊名的經(jīng)典著作,被譯為中、德、俄、日等眾多語(yǔ)言,在世界范圍內(nèi)暢銷(xiāo)不衰。  今天,無(wú)論是重構(gòu)本身,業(yè)界對(duì)重構(gòu)的理解,還是開(kāi)發(fā)工具對(duì)重構(gòu)的支持力度,都與本書(shū)最初出版時(shí)不可同日而語(yǔ)。英文注釋版根據(jù)原作者M(jìn)artin Fowler維護(hù)的本書(shū)網(wǎng)站,對(duì)原書(shū)進(jìn)行了擴(kuò)充,加入了大量新增重構(gòu),使這部不朽經(jīng)典歷久彌新。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


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


用戶(hù)評(píng)論 (總計(jì)13條)

 
 

  •   不錯(cuò)的一本書(shū),把平時(shí)的感悟理論化了,還有很多實(shí)例分析.等于直接閱讀英文原文,關(guān)鍵地方還有專(zhuān)家中文點(diǎn)評(píng)或注解.要求英語(yǔ)閱讀能力強(qiáng)的讀者.
  •   非常經(jīng)典的一本書(shū),對(duì)我很有幫助。
  •   十分優(yōu)秀的一本著作,值得每一個(gè)軟件從業(yè)人員閱讀。書(shū)本是英文的,對(duì)一些陌生的單詞有中文的注解,原汁原味
  •   幫組平凡的程序員成長(zhǎng)成優(yōu)秀的程序員的經(jīng)典教材!
  •   不錯(cuò)的一本書(shū),需要用心去看
  •   邊看邊對(duì)著自己的經(jīng)驗(yàn)思考,收益不少
  •   早前是上司推薦這本書(shū),建議我們都看看這本書(shū)。后來(lái)到書(shū)城看到英文版和中文版。因?yàn)椴恢挂晃磺拜吔ㄗh閱讀英文原版,但考慮到英文閱讀的艱難性,一直不敢買(mǎi)。之前有過(guò)買(mǎi)了英文版閱讀的痛苦經(jīng)歷。碰巧在書(shū)城也看到了《中文注釋版》簡(jiǎn)單翻了幾頁(yè),感覺(jué)還在英文句子在可接受范圍內(nèi),況且關(guān)鍵詞還有中文注釋。所以就決定提升下自己的代碼設(shè)計(jì)質(zhì)量。經(jīng)濟(jì)危機(jī)下,選擇了網(wǎng)絡(luò)購(gòu)書(shū)方式,適合于我現(xiàn)在不是很著急讀書(shū)的人。總體感覺(jué)不錯(cuò),很多地方需要細(xì)細(xì)體會(huì)。能對(duì)自己代碼設(shè)計(jì)和英文閱讀能力都有所提高。
  •   用java介紹的,由淺入深,感覺(jué)既可以提高English還可以學(xué)到知識(shí),漢語(yǔ)注釋想的比較周到,內(nèi)容嘛,還可以
  •   挺好的一本書(shū),看起來(lái)不錯(cuò)!
  •   建議英文不好的買(mǎi)中文版吧,注釋太少了,一頁(yè)才注解一兩個(gè)單詞.看得我一知半懂的,還是直接看代碼易理解.
  •   對(duì)了解整本書(shū)的內(nèi)容起不到任何有意義的作用,反而覺(jué)得添加了注釋很混亂
  •     組里最主要的Service已經(jīng)運(yùn)行了幾年了,目前大約有40000行代碼,不少部分缺乏Unit Tests。每次看代碼的時(shí)候都有一種想重構(gòu)的沖動(dòng)。
      
      不過(guò)什么時(shí)候才重構(gòu)呢?經(jīng)理那里是不好交差的——他們關(guān)心的是新功能的實(shí)現(xiàn)速度。有的時(shí)候重寫(xiě)反而(對(duì)程序員)的發(fā)展更好,因?yàn)楣ぷ髁棵黠@的可以看到。所以重構(gòu)不過(guò)是誰(shuí)都不愿意做的臟活累活,能拖就拖。
      
      于是就有了一個(gè)難題:代碼不容易理解,所以才想重構(gòu);可不理解又如何重構(gòu)呢?等自己理解了又懶得重構(gòu)了,先把手頭的任務(wù)做完再說(shuō)吧,重構(gòu)就留給下一個(gè)人吧。
      
      我認(rèn)為《重構(gòu)——改善既有代碼的設(shè)計(jì)》的貢獻(xiàn)就在于教你如何在不完全理解代碼的情況下安全的修改代碼。
      
      一次和經(jīng)理討論到了重構(gòu),他說(shuō)重構(gòu)要在有完善的測(cè)試情況下才能安全的進(jìn)行??墒茄矍暗拇a測(cè)試Coverage不到20%,而且因?yàn)檎谴a的設(shè)計(jì)導(dǎo)致其難以測(cè)試,這種情況下該怎么辦呢?是先努力寫(xiě)測(cè)試,然后再重構(gòu),還是先重構(gòu),然后在測(cè)試呢?我覺(jué)得可以采用書(shū)中提到的已經(jīng)驗(yàn)證是安全的重構(gòu)方法先進(jìn)行重構(gòu),重構(gòu)和加測(cè)試交替進(jìn)行。
  •   現(xiàn)在努力寫(xiě)Test,寫(xiě)完之后重構(gòu)你不需要在寫(xiě)Test了?
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7