重構改善既有代碼的設計(英文注釋版)

重構改善既有代碼的設計(英文注釋版)

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

編輯推薦

重構改善既有代碼的設計(英文注釋版) 重構改善既有代碼的設計(英文注釋版)

軟體開發的不朽經典,生動闡述重構原理和具體做法,新添大量重構方法,使你與時供進,豐富的辭彙和背景注釋,助你輕鬆讀經典。

重構,一言以蔽之,就是在不改變外都行為的前提下,有條不紊地改善代碼。多年來,正是本書原版的出版,使重構終於從編程高手們的小圈子走出,成為眾多普通程式設計師日常開發工作中不可或缺的一部分。而本書也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界範圍內暢銷不衰。

今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支持力度,都與本書最初出版時不可同日而語。英文注釋版根據原作者MartinFowler維護的本書網站,對原書進行了擴充,加入了大量新增重構,使這部不朽經典歷久彌新。

作者簡介

MartinFowler世界軟體開發大師,在面向對象分析設計、UML、模式、XP和重構等領域都有卓越貢獻,現為著名軟體開發諮詢公司ThoughtWorks的首席科學家。他的多部著作《分析模式》、《UML精粹》和《企業套用架構模式》等都已經成為膾炙人口的經典。

目錄

Chapter1:Refactoring,aFirstExample重構,第一個例子

TheStartingPoint起點

TheFirstStepinRefactoring重構第一步

DecomposingandRedistributingtheStatementMethod分解並重組slalemenl方法

ReplacingtheConditionalLogiconPriceCodewithPolymorphism用多態代替價格條件邏輯代碼

FinalThoughts結語

Chapter2:PrinciplesinRefactoring重構原則

DefiningRefactoring何謂重構

WhyShouldYouRefactor?為何重構

WhenShouldYouRefactor?何時重構

WhatDoITellMyManager?怎樣說服經理

ProblemswithRefactoring重構的問題

RefactoringandDesign重構與設計

RefactoringandPerformance重構與性能

WhereDidRefactoringComeFrom?重構的起源

Chapter3:BadSmellsinCode(byKentBeckandMartinFowler)代碼壞昧

DuplicatedCode重複代碼

LongMethod過長方法

LargeClass過長類

LongParameterList過長參數列表

DivergentChange發散式變化

ShotgunSurgery霰彈式修改

FeatureEnvy特性依戀

DataClumps數據泥團

PrimitiveObsession基本類型偏執

SwitchStatementsswitch語句

ParallelInheritanceHierarchies平行繼承體系

LazyClass冗餘類

SpeculativeGenerality理論上的一般性

TemporaryField臨時欄位

MessageChains訊息鏈

MiddleMan中間人

InappropriateIntimacy過度親密

AlternativeClasseswithDifferentInterfaces接口不同的等效類

IncompleteLibraryClass不完整的庫類

DataClass數據類

RefusedBequest拒絕繼承

Comments注釋過多

Chapter4:BuildingTests構建測試

TheValueofSelf-testingCode自測試代碼的重要性

TheJUnitTestingFrameworkJunit測試框架

AddingMoreTests添加更多測試

Chapter5:TowardaCatalogofRefactorings重構目錄

FormatoftheRefactorings重構描述的格式

FindingReferences尋找引用

HowMatureAreTheseRefactorings?這些重構的成熟度如何

Chapter6:ComposingMethods組合方法

ExtractMethod提取方法

InlineMethod內聯方法

InlineTemp內聯臨時變數

*ReplaceTempwithQuery用查詢方法代替臨時變數

IntroduceExplainingVariable引入解釋性變數

SplitTemporaryVariable分離臨時變數

*RemoveAssignmentstoParameters去除參數賦值

ReplaceMethodwithMethodObject用方法對象代替方法

SubstituteAlgorithm替換算法

Chapter7:MovingFeaturesBetweenObjects在對象之間移動特性

*MoveMethod移動方法

MoveField移動欄位

ExtractClass提取類

InlineClass內聯類

HideDelegate隱藏委託類

RemoveMiddleMan去除中間人

IntroduceForeignMethod引入外加方法

*IntroduceLocalExtension引入本地擴展類

Chapter8:OrganizingData組織數據

SelfEncapsulateField自封裝欄位

ReplaceDataValuewithObject用對象代替數據值

ChangeValuetoReference將值對象改為引用對象

ChangeReferencetoValue將引用對象改為值對象

ReplaceArraywithObject用對象代替數組

DuplicateObservedData重複被觀察數據

*ChangeUnidirectionalAssociationtoBidirectional將單向關聯改為雙向

ChangeBidirectionalAssociationtoUnidirectional將雙向關聯改為單向

*ReplaceMagicNumberwithSymbolicConstant用字面常量代替魔數

EncapsulateField封裝欄位

EncapsulateCollection封裝集合

ReplaceRecordwithDataClass用數據類代替記錄

*ReplaceTypeCodewithClass用類代替類型碼

ReplaceTypeCodewithSubclasses用子類代替類型碼

ReplaceTypeCodewithState/Strategy用State/Strategy代替類型碼

ReplaceSubclasswithFields用欄位代替子類

Chapter9:SimplifyingConditionalExpressions簡化條件語句

DecomposeConditional分解條件語句

ConsolidateConditionalExpression合併條件語句

ConsolidateDuplicateConditionalFragments合併重複的條件片段

RemoveControlFlag去除控制標誌

ReplaceNestedConditionalwithGuardClauses用守衛語句代替嵌套條件語句

ReplaceConditionalwithPolymorphism用多態代替條件語句 IntroduceNullObject引入Null對象

IntroduceAssertion引入斷言

Chapter10:MakingMethodCallsSimpler簡化方法調用

RenameMethod重命名方法

AddParameter添加參數

RemoveParameter去除參數

SeparatequeryfromModifier將查詢方法與修改方法分離

ParameterizeMethod參數化方法

ReplaceParameterwithExplicitMethods用顯式方法代替參數

PreserveWholeObject保持對象完整

ReplaceParameterwithMethod用方法代替參數

IntroduceParameterObject引入參數對象

RemoveSettingMethod去除設定方法

HideMethod隱藏方法

ReplaceConstructorwithFactoryMethod用工廠方法代替構造器

EncapsulateDowncast封裝向下轉型

ReplaceErrorCodewithException用異常代替錯誤碼

ReplaceExceptionwithTest用測試代替異常

Chapter11:DealingwithGeneralization處理泛化關係

PullUpField上移欄位

PullUPMethod上移方法

PullUpConstructorBody上移構造器主體

PushDownMethod下移方法

PushDownField下移欄位

ExtractSubclass提取子類

ExtractSuperclass提取超類

ExtractInterface提取接口

CollapseHierarchy合併繼承層次

FormTemplateMethod形成TemplateMethod

ReplaceInheritancewithDelegation用委託代替繼承

ReplaceDelegationwithInheritance用繼承代替委託5

Chapter12:BigRefactorings(byKentBeckandMartinFowler)大型重構

TeaseApartInheritance分解繼承層次

ConvertProceduralDesigntoObjects將過程式設計轉換為面向對象

SeparateDomainfromPresentation將領域邏輯與表現分離

ExtractHierarchy提取繼承層次

Chapter13:Refactoring,Reuse,andReality(byWilliamOpdyke)重構,復用與現實

ARealityCheck現實的檢驗

WhvAreDevelopersReluctanttoRefactorTheirPrograms?開發人員為何不願重構程式

ARealityCheck(Revisited)再談現實的檢驗

ResourcesandReferencesforRefactoring重構的資源和參考文獻

ImplicationsRegardingSoftwareReuseandTechnologyTransfer對軟體復用與技術傳播的意義

AFinalNote結語

References參考文獻

Chapter14:RefactoringTools(byDonRobertsandJohnBrant)重構工具

RefactoringwithaTool使用工具重構

TechnicalCriteriaforaRefactoringTool重構工具的技術標準

PracticalCriteriaforaRefactoringTool重構工具的實用標準

WrapUp結語

Chapter15:PuttingItAllTogether(byKentBeck)集大成

References參考文獻

ListofSoundbites要點列表

Updates更新內容

Index索引

相關詞條

熱門詞條

聯絡我們