重构

当前位置:首页 > 计算机网络 > 程序设计 > 重构

出版社:人民邮电
出版日期:2008-2
ISBN:9787115168047
作者:[美] Martin Fowler
页数:469页

内容概要

Martin Fowler,世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精粹》和《企业应用架构模式》等都已经成为脍灸人口的经典。

书籍目录

Chapter 1:Refactoring,a First Example 重构,第一个例子
The Starting Point 起点
The First Step in Refactoring 重构第一步
Decomposing and Redistributing the Statement Method 分解并重组slalemenl方法
Replacing the Conditional Logic on Price Code with Polymorphism 用多态代替价格条件逻辑代码
Final Thoughts 结语
Chapter 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? 重构的起源
Chapter 3:Bad Smells in Code(by Kent Beck and Martin Fowler) 代码坏昧
Duplicated Code 重复代码
Long Method 过长方法
Large Class 过长类
Long Parameter List 过长参数列表
Divergent Change 发散式变化
Shotgun Surgery 霰弹式修改
Feature Envy 特性依恋
Data Clumps 数据泥团
Primitive Obsession 基本类型偏执
Switch Statements switch语句
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 注释过多
Chapter 4:Building Tests 构建测试
The Value of Self-testing Code 自测试代码的重要性
The JUnit Testing Framework Junit测试框架
Adding More Tests 添加更多测试
Chapter 5:Toward a Catalog of Refactorings 重构目录
Format of the Refactorings 重构描述的格式
Finding References 寻找引用
How Mature Are These Refactorings? 这些重构的成熟度如何
Chapter 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 替换算法
Chapter 7:Moving Features Between Objects 在对象之间移动特性
*Move Method 移动方法
Move Field 移动字段
Extract Class 提取类
Inline Class 内联类
Hide Delegate 隐藏委托类
Remove Middle Man 去除中间人
Introduce Foreign Method 引入外加方法
*Introduce Local Extension 引入本地扩展类
Chapter 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 Associationto Bidirectional 将单向关联改为双向
Change Bidirectional Association to Unidirectional 将双向关联改为单向
*Replace Magic Number with Symbolic Constant 用字面常量代替魔数
Encapsulate Field 封装字段
Encapsulate Collection 封装集合
Replace Record with Data Class 用数据类代替记录
*ReplaceType Code with Class 用类代替类型码
Replace Type Code with Subclasses 用子类代替类型码
Replace Type Code with State/Strategy用State/Strategy 代替类型码
Replace Subclass with Fields 用字段代替子类
Chapter 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 引入Null对象
Introduce Assertion 引入断言
Chapter 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 用测试代替异常
Chapter 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 形成Template Method
Replace Inheritance with Delegation 用委托代替继承
Replace Delegation with Inheritance 用继承代替委托5
Chapter 12:Big Refactorings(by Kent Beck and Martin Fowler) 大型重构
Tease Apart Inheritance 分解继承层次
Convert Procedural Design to Objects 将过程式设计转换为面向对象
Separate Domain from Presentation 将领域逻辑与表现分离
Extract Hierarchy 提取继承层次
Chapter 13:Refactoring,Reuse,and Reality(by William Opdyke) 重构,复用与现实
A Reality Check 现实的检验
Whv 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 参考文献
Chapter 14:Refactoring Tools(by Don Roberts and John Brant) 重构工具
Refactoring with a Tool 使用工具重构
Technical Criteria for a Refactoring Tool 重构工具的技术标准
Practical Criteria for a Refactoring Tool 重构工具的实用标准
Wrap Up 结语
Chapter 15:Putting It All Together(by Kent Beck) 集大成
References参考文献
List of Soundbites 要点列表
Updates 更新内容
Index 索引

编辑推荐

  软件开发的不朽经典,生动阐述重构原理和具体做法,新添大量重构方法,使你与时供进,丰富的词汇和背景注释,助你轻松读经典。  重构,一言以蔽之,就是在不改变外都行为的前提下,有条不紊地改善代码。多年来,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。而本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。  今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语。英文注释版根据原作者Martin Fowler维护的本书网站,对原书进行了扩充,加入了大量新增重构,使这部不朽经典历久弥新。

作者简介

本书清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。本书适合软件开发人员、项目管理人员等阅读,也可作为高等院校计算机及相关专业师生的参考读物。

图书封面


 重构下载 更多精彩书评



发布书评

 
 


精彩书评 (总计4条)

  •     纵览武侠江湖,制胜法门不外两项,内功和外功。二者得一可天下去得,但最终皆入内外兼修之境倚天是自内而外,先修内功九阳真经,然后以此为基础,加上太极拳和太极剑,最终成就天下第一高手笑傲是自外而内,先学独孤九剑,后学吸星大法,最后学易筋经。神雕也不外如是,玉女心经算是外功,内功则是独孤求败之法门。只修内不修外,好比万贯家财而不知用,张无忌也要得传太极方可天下去得。只修外不修内,终是一场空。令狐冲身怀独孤九剑,在义救向问天时几乎丢掉性命。软件工程的自动化测试和设计模式,近似武侠世界的内功和外功自动化测试好比内功,没有自动化测试为根基,每做一次修改,都可能引发不可思议错误,若没有自动化测试,最终进入无测试死循环。设计模式好比外功,重构的方法好比剑招,剑招固然重要,但更重要的是知道什么时候用什么剑招,心中无招,信手挥洒,皆是模式。内里明心见性,心如磐石,护体神功,自动化测试;外求格物致知,游刃有余,独孤九剑,设计模式。而<重构>好比五岳剑谱,是独孤九剑之基础功夫,令狐冲是在思过崖看到五岳剑派的剑谱和破法,然后发了疑情,然后才接受独孤九剑的思想并最终继承之,而练成之后,随心所欲,五岳剑谱的剑招还是常用的,所以讲独孤九剑与五岳剑谱只是外功的不同阶段而已。学会了五岳剑谱,才能更好地领会独孤九剑,学会了独孤九剑,才能更好地把握什么时候用什么剑招。《重构》->《设计模式》
  •     这本英文注释版的比起中译版本感觉更值,最后还添加了近 10 个最新的重构手法。虽然读了该书的各种重构手法的具体操作步骤,作者也的确一步步给出了详细做法,但仍然还是觉得不够深刻。自己思考了一下,原来问题在于缺乏OOP思想、编程原则等等更加关键性、原始性知识的理解。恰好最近又重读了《冒号课堂》一书,这才对《重构》里面的一些手法又更深的理解了。很多重构涉及到类职责、类间依赖关系、类的层次结构、应对变化的技巧等等,OOP思想和编程原则是更具指导性的关键知识。
  •     对于这本应该在软件开发领域里占据如此重要地位的一本书,似乎不需要再做额外的评价了。许多人将其视为与GOF《设计模式》并列的巨著自有其道理。我想本书最重要的贡献是在计算机开发领域,总结并开创出一个新的领域-重构。由于本书的巨大影响力,重构工具已经并入到许多知名IDE中,比如JAVA领域份额最大的Eciplise,以及.net 的VS(本书成书之前只有smalltalk界支持)。作为如此重要的一本书,邮电出版社到现在才推出英文版确实有有些晚了,我想国内的读者应该很早前就接触这本书了,这也是这里关于这本书评论如此之少的原因吧。不过值得肯定的是,人邮在原书基础上搞出个注释版出来,这种折中的方法可以说既保留了原作内容,又能在某些关键或者晦涩的地方给出注释,应该是一种不错的方式,值得肯定:)。

精彩短评 (总计26条)

  •     边看边对着自己的经验思考,收益不少
  •     选择了看这一版
  •     早前是上司推荐这本书,建议我们都看看这本书。后来到书城看到英文版和中文版。因为不止一位前辈建议阅读英文原版,但考虑到英文阅读的艰难性,一直不敢买。之前有过买了英文版阅读的痛苦经历。碰巧在书城也看到了《中文注释版》简单翻了几页,感觉还在英文句子在可接受范围内,况且关键词还有中文注释。所以就决定提升下自己的代码设计质量。经济危机下,选择了网络购书方式,适合于我现在不是很着急读书的人。总体感觉不错,很多地方需要细细体会。能对自己代码设计和英文阅读能力都有所提高。
  •     挺好的一本书,看起来不错!
  •     不错的一本书,把平时的感悟理论化了,还有很多实例分析.等于直接阅读英文原文,关键地方还有专家中文点评或注解.要求英语阅读能力强的读者.
  •     这书我看了三遍,第一遍看的英文注释版,一口气读完,读得醍醐灌顶,前一阵子这本书的第二次译本又出了,买来读了觉得又是一次认识,而且发现翻译的水平很不错,中英文都能读,可见不光作者水平高,译者也是很用心。第三遍读了英文原版,这次属于配合项目读,拿出我第一次做的项目,边读边改,一边下来感觉整个人都通畅了,再看下项目,发现项目不仅仅是可读这么简单了,加功能不会动原有代码,改不会大面积增加代码,这书值得推荐
  •     对了解整本书的内容起不到任何有意义的作用,反而觉得添加了注释很混乱
  •     看的另一版本的,封皮色深
  •     去掉代码中的坏味道。
  •     软件开发人员的必读书目
  •     现在努力写Test,写完之后重构你不需要在写Test了?
  •     讲述重构的经典著作
  •     建议英文不好的买中文版吧,注释太少了,一页才注解一两个单词.看得我一知半懂的,还是直接看代码易理解.
  •     不错的一本书,需要用心去看
  •     不用多说的经典
  •     OOP based, design pattern oriented
  •     习惯需要在一点一滴中养成,优势也必须以这种方式确立。
  •     重构属于软件工程里面的,还有测试也是,今天才知道。这本书写的很好,英文评注版的原汁原味点。重构适用于新手,会帮助养成很好的编写习惯:定义名称,定义变量范围,OOP.不怎么包含技术知识点,更多的是方法论.
  •     大部分的做法在阅读书之前都有使用过,看这本书更重要的是系统性和总结性。书本整体价值还是很高的,what when where why how都介绍得很清楚。我觉得可能再加入一些整体系统的重构文案会更好,大部分case还是比较散,即使是书中说到的大型重构也不是太完整。当然重构都是小步快跑,所以这一点也不是特别致命。
  •     刚刚毕业那会儿,看过一遍,但是貌似有很多没看懂,至今还看到当年标的一些注解和疑惑,挺好玩的,O(∩_∩)O哈哈~,原来当年我也是这么蠢萌萌的。这次再看就完全不一样的感觉,几年的开发和维护系统的经验,让我更理解这本书的意义,产生了很多共鸣,书中提到的每一个模式,我几乎都经历过,只是没有这么好的总结能力,当然个中模式有差异和相似,针对的不同的情况选择相似中的某一个还是有收获的。谢谢Martin Fowler,谢谢注释者。 建议从业者塌下心读读这本书,你一定会有很多收获的。
  •     帮组平凡的程序员成长成优秀的程序员的经典教材!
  •       组里最主要的Service已经运行了几年了,目前大约有40000行代码,不少部分缺乏Unit Tests。每次看代码的时候都有一种想重构的冲动。
      
      不过什么时候才重构呢?经理那里是不好交差的——他们关心的是新功能的实现速度。有的时候重写反而(对程序员)的发展更好,因为工作量明显的可以看到。所以重构不过是谁都不愿意做的脏活累活,能拖就拖。
      
      于是就有了一个难题:代码不容易理解,所以才想重构;可不理解又如何重构呢?等自己理解了又懒得重构了,先把手头的任务做完再说吧,重构就留给下一个人吧。
      
      我认为《重构——改善既有代码的设计》的贡献就在于教你如何在不完全理解代码的情况下安全的修改代码。
      
      一次和经理讨论到了重构,他说重构要在有完善的测试情况下才能安全的进行。可是眼前的代码测试Coverage不到20%,而且因为正是代码的设计导致其难以测试,这种情况下该怎么办呢?是先努力写测试,然后再重构,还是先重构,然后在测试呢?我觉得可以采用书中提到的已经验证是安全的重构方法先进行重构,重构和加测试交替进行。
  •     十分优秀的一本著作,值得每一个软件从业人员阅读。书本是英文的,对一些陌生的单词有中文的注解,原汁原味
  •     Martin是我最中意公司TW的首席科学家,读完这本书,才发现以前开发中所遇到的诸多问题应该如何采取更合理的方式去解决。书中除了大量的重构方法外,还包含了很多设计模式相关的东西,看的人爽之又爽。软件开发必备的参考书!!
  •     非常经典的一本书,对我很有帮助。
  •     用java介绍的,由浅入深,感觉既可以提高English还可以学到知识,汉语注释想的比较周到,内容嘛,还可以
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024