又是一本E文书,花了比中文书3倍的时间去看它,不过怎么说多看E文有好处,对于国内的人的翻译也不放心,当年的《设计模式》中文版让我看得吐血,后来还是买了E文原版,两本书对照着看。虽然慢点,但是买E文书还是有好处地,特别是这样的经典图书。
在看它之前,对于重构也略知一二,包括基本的原则和实现的方式,但是一直没有系统而全面的看重构的意义和实现方法,它更像是一本重构的普及教材,同时又是作者的经验总结,在大家没有重视的时候,他能够跳出来强调重构的意义和实现,真是难得。
首先说一下看这本书的前提,个人感觉是需要有三个条件:
1. 熟悉Java或者其他面向对象的程序设计语言,如果没有,那么这本书到第五章来说就已经结束了。
2. 熟悉设计模式,最好看过GOF。不熟悉设计模式,对于很多例子还是不会理解的。
3. 要有面向对象设计和开发经验,对于没有经验的人来说,这本书是没有意义的。
其实这本书帮我解决最大的问题是认识了重构的真正意义,就是“自上而下的设计”。之前一直的困惑就是需求的变更,所以总是费尽心机去寻找能够适应所有变化的一种设计,这种之上而下的设计方式,是非常脆弱的,在实际开发中会遇到很多问题。期望需求不发生变更,所有的设计都能够被落实,这种事情只有在教科书里面才会有,现实的商业环境是绝对不现实的。所以既然不能指望需求不变更,那就让你随便变,然后我随便做,做好以后在做设计,特别喜欢这句话:
“The first time you do something, you just do it. The second time you do something similar, you wince at the duplication, but you do the duplication thing anyway. The third time you do something, you refactor.” – by Don Roberts.
明确了意义就要知道它的目的是什么?“To restructure software by applying a series of refactoring without changing its observable behavior. ” 两层意思:1.让软件更加容易的理解和变更。2. 不改变软件本身的功能,即不加功能也不减功能。
什么时候是最好的重构时机?
1. 当添加要功能的时候。
2. 当你修理一个bug的时候。
3. 当Code Review的时候。
重构的基本操作对象:1. 方法本身,分拆,合并,变量,参数调整等。2. 对象间内容的移动,类的分拆,方法,变量的移动,委托等方法。3. 组织数据:数据结构的调整也是重构中的重要部分。4. 条件表达式和方法的调用。5. 利用面向对象的特点,泛化的使用。这些都是小地方的调整。中间还有一一章是关于大的重构方式,感觉还是要根据实际情况和自己的经验来。另外一个感觉就是,其实很多作者提到的方法,其实在JAVA的变化中已经用更好的方式实现了(作者写的时候JAVA才1.2,现在已经是1.6了)比如说,assert的方式,在1.4的时候就已经在JAVA中内建了这个功能。
总体来说这本书是非常经典的一本书,唤醒了大家对重构的重视,但是重构是一个很大的课题,理解他的意义是远远不够的,关键还是在于知道在什么时候用什么方法来进行重构,这个需要开发人员有这个能力去做,管理人员肯花时间让这么做。其实最大的压力也就是在管理这方面,做新功能看得见,重构看不见。开发人员的能力是另外一个问题,其实很多的问题是可以在开发过程中避免的,重构能够让开发人员学到很多的东西,这个相辅相成循环,可以是良性的,而反之则可能是恶性的一个循环。
相关推荐
重构——改善既有代码设计,经典文档,架构师必须教程
重构改善既有代码的设计,重构改善既有代码的设计课件,重构改善既有代码的设计PPT
《重构 改善既有代码的设计》清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70 多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机...
一直很喜欢重构这本书,但是由于自己记性不太好,书看过之后其中的方法总是记不住,于是想如果有电子版的重构书就好了,工作中遇到重构的问题可以随时打开查阅。在网上搜索了许久,发现重构这本书有英文chm版本的,...
重构-改善既有代码的设计(高清版)pdf 重构-改善既有代码的设计(高清版)pdf 重构-改善既有代码的设计(高清版)pdf 重构-改善既有代码的设计(高清版)pdf
重构 改善既有代码的设计.pdf
重构-改善既有代码的设计--高清版.pdf
重构:改善既有代码的设计 中文PDF清晰版 Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)...
英文版(重构改善既有代码的设计)
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)解释重构的原理(principles)和最佳实践...
重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计 重构_改善既有代码的设计
重构-改善既有代码的设计(高清带书签版)
《重构-改善既有代码的设计》.chm
《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法...
《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法...
《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式, 并给出了何时以及何地应该开始挖掘代码以求改善。 书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换...
5.3 这些重构准则有多成熟 第6章 重新组织你的函数 6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) ...
《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法...