《重构》读后

原创 2003年10月12日 23:58:00

       根据我对自己的要求,每读完一本好书都要写点心得感想之类。为此书的阅读画一个句号。其实一个多月前就看完了,但这一段忙着玩《仙三》及帮老婆大人做事,迟迟未写《重构》的感想。

       这本书的封面上写着“与设计模式齐名的大作”,我认为它对的起这个评价。这本书对我的影响恐怕会和《设计模式》一样大。尤其难得的是,书中的英文及其浅显易懂,连我这样的超级大弱人都可以轻松阅读。也充分体现了大师的文字功力。

       写一点关于重构的体会吧。

       首先,我们必须知道怎样做是不好的代码,怎样做会更好一些。然后才能想办法把不好的变成好的。把不好变成好的过程,就是重构。

       代码质量的提高是一个循序渐进的过程,没有最好,只有更好。我们重构前要权衡这次重构获得的利益与付出的代价。(正如我们常做的在灵活性与复杂度之间的权衡)。通常呢,为了实现新功能铺平道路的重构是我们最愿意去做的。

       说到代码质量,其实在不同水平上的人对代码质量的要求是不同的。从最开始的只要代码能运行通就可以;到后面的符合编码规范;到后面的清晰易读;再到后面的易改变,可重用;以至于“有那种难以名状的结构美”。每个人在自己程序生涯的不同阶段,能体会到的东西是不同的。我一直把发现自己的不足,重构自己的代码称做“自我修炼”。而如果有一个水平比你高的同事帮你做CodeView,指出你可以改进的地方,你再去做Refactor,自己的修炼速度肯定可以更快。

       这里,我要感谢一直在帮我做CodeView的同事。她有一种才能,可以敏锐的发现你设计上的不足。Kent Beck把它叫做“Insight”,就是洞察力。呵呵,不知道,这个东西能否随着工作经验的增长而增长。但愿可以,那我终于有一天也会拥有这种才能。:)

       还是从重构开始的地方说起,就是发现哪里的代码是不好的。书中把它称为“Bad Smell”。回想一下,主要有哪些呢。1Long Method,这个是我们最常做重构的地方。2,几个部分紧密耦合,存在不必要的依赖性。3,修改一项内容必须要协调的改几个不同的地方。4,类的职责不明确,逻辑关系混乱。5Switch的使用。嗯,应该还有很多,记不清楚了。对了,还有,“重复代码”,记得有人说过重复代码是万恶之源。呵呵,万恶淫为首,重复代码为源。总之,很多人都深受其害亚。不过,我觉得重复代码的问题,应该从开始代码的时候就尽量避免,不要留到重构的时候再去做。就是说,当你准备Copypaste的时候,先把要复制的代码提取成函数吧。

       还有很重要的一点,重构一定要安全。XP一直在强调编码未动,测试先行。重构的时候有完整的单元测试支持,每走一步都会很有信心,很放心。但不幸的是,世界是有残缺美的,我们的自动测试往往并没有那么完备。这个时候,我们一定要对重构的代码有完全的理解与把握,而且重构一定要小心翼翼。尤其在重构其他人代码的时候,千万不要迷迷糊糊的就改。

       嗯。时间不早,暂时就是这些。

       前一段还翻看了一本讲软件架构师的书,其中有一句话印象很深,“每个人都是自己幸福的架构师”。以此类推,我们是否可以对我们的生活进行重构呢。:)

《代码整洁之道》读后总结--关于方法

1.几个问题: Q1:  怎样让代码(函数中含有大量的代码行,大量的信息)易于理解? Q2:  怎样让函数表达其意图? Q3:  给函数哪些属性,以便让读者一看便明白函数术语怎样的程序? ...
  • TheSnowBoy_2
  • TheSnowBoy_2
  • 2016年06月20日 23:14
  • 483

重构第七章读后总结

本章讲的是在对象之间搬移特性,主要手法有如下几个: 1、搬移函数: 什么时候用?        在程序中如果有个函数与其所驻类之外的另一个类进行更多的交流,调用后者或被后者调...
  • zgxy666
  • zgxy666
  • 2017年08月20日 01:42
  • 49

重构第六章读后总结

第六章的重新组织函数感觉非常的实用,之前我习惯把实现某个功能的逻辑写在一个方法,那样看起来也没有什么不妥的。可是那样的话如果有其他地方相同的代码片段,那我就要从新写一遍相同的逻辑这样代码就变得冗余。如...
  • zgxy666
  • zgxy666
  • 2017年08月12日 23:19
  • 49

高性能MySQL读书笔记

MySQL查询性能分析(读书笔记)如果只需要查询结果集的部分数据,尽量使用limit,这样避免冗余查询。 如果不需要缓存复用查询的情况,尽量不要使用select *,避免返回冗余的列。 关联查询时...
  • gu_ywei
  • gu_ywei
  • 2017年01月22日 17:59
  • 124

【讀書筆記】成为技术领导者

【讀書筆記】成为技术领导者 SkySeraph Jan. 27th  2016 Email:skyseraph00@163.com 啰嗦   “成为技术领导者” 这本书,针对创...
  • zgzhaobo
  • zgzhaobo
  • 2016年03月07日 23:20
  • 528

重构第2章读后总结

何为重构?         本书对它名词的定义是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。它的目的是使得软件更容易被理解和修改。重构不会改变软件...
  • zgxy666
  • zgxy666
  • 2017年07月28日 23:38
  • 49

数据库重构『英文版』读后的个人总结

一,在敏捷开发中,当用户story进入开发阶段时,首先是判断现有代码是否能够完成用户的story。重构,将会伴随整个的开发过程。重构在保持原有的行为语义不变的基础上,采用渐进地(演进式)方式,逐步实现...
  • lihxa2002
  • lihxa2002
  • 2016年11月07日 09:11
  • 310

重构第3章读后总结

什么是有坏味道的代码?      重复代码:如果在一个以上的地方看到相同的程序结构,那么可以肯定将他们合二为一程序会变得更好。      过长的函数:程序越长越难以理解,将函数分解给函数取个好名字,代...
  • zgxy666
  • zgxy666
  • 2017年07月29日 00:16
  • 69

观后感《金粉世家》

元旦放假,休息了几天,看春节晚会的时候无意间听到了暗香这首歌曲,想起了小时候在老家看的金粉世家电视剧,然后突然就很想看,所以3天假期,基本上都看了金粉世家这部电视剧。   这是一部民国时代的《红楼梦...
  • ll13644888834
  • ll13644888834
  • 2016年01月03日 22:06
  • 649

Java并发编程实践-读后感(1-14.4)

-对于网站客流量统计,可以
  • jdzms23
  • jdzms23
  • 2014年04月29日 21:37
  • 576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《重构》读后
举报原因:
原因补充:

(最多只允许输入30个字)