读“重构-改善既有代码的设计”一书重点摘要

原创 2011年01月21日 11:42:00

最近这几点重构看了《重构-改善既有代码的设计》一书,感觉说的确实太考虑。使我对软件设计有了一个更高程度的认识。下面对书中个人觉得比较有意思的内容进行记录下来。

1.什么是重构?

  所谓重构是这样一个过程:“在不改变程序外在行为的前提下,对程序做出修改,以改进程序的内部结构”。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整理过程中不小心引起错误的几率降到最低。本质上说,重构就是“在程序写好之后改进它的设计”。

2.如果你发现自己需要为程序添加一个特性,而程序结构使你无法很方便地那么做,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。

3.重构之前,首先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。

4.代码区域愈小,代码的功能就越容易管理,代码的处理和搬移也都越轻松。

5.任何不会被修改的变量都可以被当成参数传入新的函数,至于会被修改的变量就需格外小心。如果只有一个变量会被修改,可以把它当做返回值。

6.任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。

7.重构:对软件内部结构的一种调整,目的是在不改变软件之可察行为的前提下,提高其可理解性,降低其修改难度。

8.可需要重构的地方:

 a。重复的代码(Duplicated Code

 b。过长函数(Long Method

 c。过大类别(Large Class

 d。过长参数列(Long Parameter List

 e。发散式变化(Divergent Change

 f。散弹式修改(Shotgun Surgery

 g。依恋情结(Feature Envy

 h。资料泥团(Data Clumps

 i。基本型别偏执(Primitive Obsession

 j。Switch语句(Switch Statements

 k。平行继承体系(Parallel Inheritance Hierarchies

 l。冗员类别(Lazy Class

 m。夸夸其谈未来性(Speculative Generality

 n。令人迷惑的临时变量(Temporary Field

 o。过度耦合的讯息链(Message Chains

 p。中间转手人(Middle Man

 q。异曲同工的类别

 r。不完美的程序库类别

 s。纯粹的资料类别(Data Class

 t。过多的注释(Comments

读《SaaS架构设计》一书有感

记得在淘宝的三面时面试官提到了SaaS,我当时是说不了解。回到长沙后整理了一些要去了解和学习的东西。还好在图书馆摸索到了《SaaS架构设计》一书。都是阿里巴巴架构师或专家所著,里面把SaaS的架构设计...

《自控力》一书摘要

章节一 通过呼吸实现自控 快速提高意志力的方法:将呼吸频率降低到每分钟4~6次,也就是每次呼吸用10~15秒。请专注于缓慢地、充分地呼气(就像用吸管向外呼吸一样)。 研究表明,坚持这个练习能增加...

每周一书-编写高质量代码:改善C程序代码的125个建议

C语言因为既具有高级语言特性,又具有汇编语言特性,所以它是近二十几年来使用较为广泛、生命力较强的编程语言。无论是操作系统、嵌入式系统、普通应用软件,还是移动智能设备开发,它都能够很好地胜任,是公认的强...
  • xuanhun
  • xuanhun
  • 2016年08月29日 11:07
  • 1137

《数字图像处理原理与实践(MATLAB版)》一书之代码Part1

笔者欲陆续上传《数字图像处理原理与实践(MATLAB版)》一书之全部代码,本文是该系列的Part1,辑录原书前40页所设计之源码...

《数字图像处理原理与实践(MATLAB版)》一书之代码Part4

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part4(由于之前发布顺序调整,请读者注意页码标注而不要仅仅依据系列文章的标题编号),辑录该书第186至第280页之代码,供有需要读...

【图像处理中的数学修炼】一书之代码

数字图像处理对数学的要求颇高,这不禁令很多学习者望而却步。在阅读图像处理方面的论文时,面对梯度、散度、黑塞矩阵、傅里叶变换等这些本该在微积分中早已耳熟能详的概念时,很多人仍然感觉一筹莫展。为了弭平图像...

算法之美一书完整代码发布链接整理

探秘算法世界,求索数据结构之道;汇集经典问题,畅享编程技法之趣;点拨求职热点,敲开业界名企之门。 总的来说, 我不太喜欢翻开一本书(技术书),里面密密麻麻的全部都是代码。所以我也希望能够在我的书中...

《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part2,涉及该书大致40~135页所覆盖之代码,后续代码将陆续发布,供有需求读者参阅学习...

详解机器学习中的VC维

机器学习中的经典算法SVM(支持向量机)最初是由前苏联数学家Vladimir Vapnik 和 Alexey Chervonenkis 在 1963年提出的。二人合作完成的另外一个之于机器学习的重要贡...

《数字图像处理原理与实践(MATLAB版)》一书之代码Part3

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part3,涉及该书大致135~184页所涉及之代码,后续代码将陆续发布,供有需求读者参阅学习...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读“重构-改善既有代码的设计”一书重点摘要
举报原因:
原因补充:

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