
作者:(美)福勒著
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索引