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用继承代替委托
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索引