摘要: 14、总结 首先,这是一本太老的书,很多观点已经被固化或者过时了。但核心观点没有问题,虽然大多数观点已经被认为是理所当然的事情了。 重构的定义 重构分几种: 1、狭义的代码重构 就是本书讲的,在不改变软件可观察行为的前提下,改变其内部结构。这就是完全不改变程序的功能,只是改变代码的组织方式,也就是只 阅读全文
posted @ 2019-02-16 23:12 傲衣华少 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 13、重构,复用与现实 为什么开发者不愿意重构他们的程序? 重构的好处是显而易见的,但这只是开发者的梦想,那么让梦想进入现实: 为什么还不肯重构你的程序呢?有几个可能的原因: 1. 你不知道如何重构。 2. 如果这些利益是长远(才展现)的,何必现在付出这些努力呢?长远看来,说不定当项目收获这些利益时 阅读全文
posted @ 2019-02-16 22:31 傲衣华少 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 12、大型重构 这是一个庞大的工程,可能需要几个月。 在这个过程中,你应该根据需要安排自己的工作,只在需要添加新功能或修补错误 时才进行重构。 你不必一开始就完成整个系统的重构;重构程度只要能满足其他任务的需要就行了。反正明天你还可以回来重构。 进行大规模重构时,有必要为整个开发团队建立共识;这是小 阅读全文
posted @ 2019-02-16 21:43 傲衣华少 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 5、重构名录 寻找引用点 本书成书较早,所以也写了如何判断元素是否被使用,但现在的IDE已经足够强大,这部分已经没有意义。 这些重构准则有多成熟 重构的基本技巧——小步前进、频繁测试——已经得到多年的实践检验。 关于这些重构手法,另一个需要记住的就是:我是在「单进程」(single-procerss 阅读全文
posted @ 2019-02-16 18:15 傲衣华少 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 4、构筑测试体系 本书成书较早,所以用大量的篇幅写了测试的重要性,但随着TDD等理论的普及,现在这已经是理所当然的事情了。 所以这里只简单记录几件事 1、重构的前提是可测试。 2、要不停的测试,小步快跑。 3、隔离重构和特性开发 阅读全文
posted @ 2019-02-16 18:00 傲衣华少 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 3、代码的坏味道 由于好多都太简单了,而且后面讲重构方法的时候,还会讲到,这里就只列名字了。 Duplicated Code(重复的代码) Long Method(过长函数) Large Class(过大类) Long Parameter List(过长参数列) Divergent Change(发 阅读全文
posted @ 2019-02-16 17:54 傲衣华少 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 2、重构原则 这章其实和前言很多是相辅相成的,可以合并为一章,但我不暂时不想这么做了,等后面复习的时候再做吧。 重构的目的 1、提高理解性 程序主要是给人看的,而不是给机器看的。 2、降低修改成本 程序的维护时间比开发时间要长的多。 3、重构不会改变软件可观察的行为 也就是说,重构不改变对外接口,及 阅读全文
posted @ 2019-02-16 17:10 傲衣华少 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 1、前言 重构的定义 重构是在不改变软件可观察行为的前提下,改变其内部结构。 这个动作,就是动词的重构,这个工作,就是名词的重构。 重构是一种经千锤百炼形成的有条不紊的程序整理方法们可以最大限度的减少整理过程中引入错误的几率。本质上说,重构是代码写好后改进他的设计。 最纯粹的重构,是不需要了解软件行 阅读全文
posted @ 2019-02-16 13:40 傲衣华少 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 11、处理概括关系【更优雅的继承】 Pull Up Field(值域上移) 两个subclasses 拥有相同的值域。将此一值域移至superclass。 Pull Up Method(函数上移) 有些函数,在各个subclass 中产生完全相同的结果。将该函数移至superclass。 Pull 阅读全文
posted @ 2019-02-16 12:56 傲衣华少 阅读(267) 评论(0) 推荐(0) 编辑