注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計程序設計綜合重構:改善既有代碼的設計

重構:改善既有代碼的設計

重構:改善既有代碼的設計

定 價:¥49.00

作 者: (美)Martin Fowler著
出版社: 中國電力出版社
叢編項: 原版風暴·軟件工程系列
標 簽: 計算機/網(wǎng)絡 軟件工程/開發(fā)項目管理

ISBN: 9787508315010 出版時間: 2003-06-01 包裝: 平裝
開本: 23cm 頁數(shù): 431 字數(shù):  

內容簡介

  隨著對象技術應用越來越普及,軟件開發(fā)社區(qū)出現(xiàn)了一個新的問題。缺乏經(jīng)驗的開發(fā)者編寫出了大批設計較差的程序,導致這些應用程序非常低效,且難于維護和擴展。本書除了討論重構的各種技巧之外,還提供了超過70個可行重構的詳細編目,對如何應用它們給出了有用的提示;并以stepbystep的形式給出了應用每一種重構的指南;而且用實例展示了重構的工作原理。這些示例都是用Java語言寫成的,但其中的思想?yún)s可以運用于任何面向對象編程語言。本書是軟件工程領域的超級經(jīng)典巨著,與另一巨著《設計模式》并稱"軟工雙雄",全美銷量超過100000冊,亞馬遜書店五星書。在本書中,作者MartinFowler充分展示了何處可能需要重構,以及如何將不好的設計改造為良好的設計。重構的每一步可能都非常簡單、非常基礎,但這些輕微的改變的累積效果卻可以在極大程度上改進我們的設計。事實證明,重構是防止軟件沒落的可行方式。本書除了討論重構的各種技巧之外,還提供了超過70個可行重構的詳細目錄,給出了重構的工作原理,并以stepbystep的形式給出了應用每一種重構的指南。這些示例都是用Java語言寫成的,但其中的思想?yún)s可以運用到任何面對象的編程語言中。第一作者MartinFowler,除了是對象技術方面的專家外,還是UML和模式方面的專家。他撰寫的AnalysisPatterns、UMLDistilled、PatternsofEnterpriseApplicationArchitecture和PlanningExtremeProgramming幾本書也廣受贊譽,在亞馬遜上的評價也極高(最低星級為4星),從這些也足可見其在業(yè)內的顯赫地位。相信這本書以影印版的形式在國內推出,巨匠巨著,原汁原味,無疑是給國內廣大軟件開發(fā)人員提供了一盞前進路上的明燈。讀者對象:軟件開發(fā)人員,項目管理人員,高等院校計算機及相關專業(yè)師生,其他相關人員

作者簡介

  作者:MartinFowlerMartinFowler是一位獨立咨詢顧問,他運用對象技術解決企業(yè)問題已經(jīng)超過十年。他的顧問領域包括健康管理、金融貿易,以及法人財務。他的客戶包括Chrysler,Citibank,UKNationalHealthService,AndersenConsulting,NetscapeCommunications。此外Fowler也是objects、UML、patterns技術的一位合格講師,他是《AnalysisPatterns》和《UMLDistilled》的作者。UML精粹:標準對象建模語言簡明指南(第3版)(英文影印版)>>更多作品

圖書目錄

1. Refactoring, a First Example. 
The Starting Point. 
The First Step in Refactoring. 
Decomposing and Redistributing the Statement Method. 
Replacing the Conditional Logic on Price Code with Polymorphism. 
Final Thoughts. 

2. Principles in Refactoring. 
Defining Refactoring. 
Why Should You Refactor? 
When Should You Refactor? 
What Do I Tell My Manager? 
Problems with Refactoring. 
Refactoring and Design. 
Refactoring and Performance. 
Where Did Refactoring Come From? 

3. Bad Smells in Code. 
Duplicated Code. 
Long Method. 
Large Class. 
Long Parameter List. 
Divergent Change. 
Shotgun Surgery. 
Feature Envy. 
Data Clumps. 
Primitive Obsession. 
Switch Statements. 
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. 
Refused Bequest. 
Comments. 

4. Building Tests. 
The Value of Self-testing Code. 
The JUnit Testing Framework. 
Adding More Tests. 

5. Toward a Catalog of Refactorings. 
Format of the Refactorings. 
Finding References. 
How Mature Are These Refactorings? 

6. Composing Methods. 
Extract Method. 
Inline Method. 
Inline Temp. 
Replace Temp with Query. 
Introduce Explaining Variable. 
Split Temporary Variable. 
Remove Assignments to Parameters. 
Replace Method with Method Object. 
Substitute Algorithm. 

7. Moving Features Between Objects. 
Move Method. 
Move Field. 
Extract Class. 
Inline Class. 
Hide Delegate. 
Remove Middle Man. 
Introduce Foreign Method. 
Introduce Local Extension. 

8. Organizing Data. 
Self Encapsulate Field. 
Replace Data Value with Object. 
Change Value to Reference. 
Change Reference to Value. 
Replace Array with Object. 
Duplicate Observed Data. 
Change Unidirectional Association to Bidirectional. 
Change Bidirectional Association to Unidirectional. 
Replace Magic Number with Symbolic Constant. 
Encapsulate Field. 
Encapsulate Collection. 
Replace Record with Data Class. 
Replace Type Code with Class. 
Replace Type Code with Subclasses. 
Replace Type Code with State/Strategy. 
Replace Subclass with Fields. 

9. Simplifying Conditional Expressions. 
Decompose Conditional. 
Consolidate Conditional Expression. 
Consolidate Duplicate Conditional Fragments. 
Remove Control Flag. 
Replace Nested Conditional with Guard Clauses. 
Replace Conditional with Polymorphism. 
Introduce Null Object. 
Introduce Assertion. 

10. Making Method Calls Simpler. 
Rename Method. 
Add Parameter. 
Remove Parameter. 
Separate Query from Modifier. 
Parameterize Method. 
Replace Parameter with Explicit Methods. 
Preserve Whole Object. 
Replace Parameter with Method. 
Introduce Parameter Object. 
Remove Setting Method. 
Hide Method. 
Replace Constructor with Factory Method. 
Encapsulate Downcast. 
Replace Error Code with Exception. 
Replace Exception with Test. 

11. Dealing with Generalization. 
Pull Up Field. 
Pull Up Method. 
Pull Up Constructor Body. 
Push Down Method. 
Push Down Field. 
Extract Subclass. 
Extract Superclass. 
Extract Interface. 
Collapse Hierarchy. 
Form Template Method. 
Replace Inheritance with Delegation. 
Replace Delegation with Inheritance. 

12. Big Refactorings. 
Tease Apart Inheritance. 
Convert Procedural Design to Objects. 
Separate Domain from Presentation. 
Extract Hierarchy. 

13. Refactoring, Reuse, and Reality. 
A Reality Check. 
Why Are Developers Reluctant to Refactor Their Programs? 
A Reality Check (Revisited). 
Resources and References for Refactoring. 
Implications Regarding Software Reuse and Technology Transfer. 
A Final Note. 
References. 

14. Refactoring Tools. 
Refactoring with a Tool. 
Technical Criteria for a Refactoring Tool. 
Practical Criteria for a Refactoring Tool. 
Wrap Up. 

15. Putting It All Together. 
References. 
List of Soundbites. 
List of Refactorings. 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號