ISBN:10位[7115168040]13位[9787115168047]
出版社:人民郵電出版社
出版日期:2008-2-1
定價:¥69.00元
內容提要
本書清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘代碼以求改善。書中給出了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索引