笔记:重构
http://book.douban.com/subject/4262627/
这本书主要介绍了需要重构的情况、出现这些情况可以用到的方法以及,动手重构之前需要有单元测试。
需要重构的情况:
DuplicatedCode(重复代码)
LongMethod(过长函数)
LargeClass(过大的类)
LongParameterList(过长参数列)
DivergentChange(发散式变化)
ShotgunSurgery(霰弹式修改)
FeatureEnvy(依恋情结)
DataClumps(数据泥团)
PrimitiveObsession(基本类型偏执)
SwitchStatements(switch惊悚现身)
ParallelInheritanceHierarchies(平行继承体系)
LazyClass(冗赘类)
SpeculativeGenerality(夸夸其谈未来性)
TemporaryField(令人迷惑的暂时字段)
MessageChains(过度耦合的消息链)
MiddleMan(中间人)
InappropriateIntimacy(狎昵关系)
AlternativeClasseswithDifferentInterfaces(异曲同工的类)
IncompleteLibraryClass(不完美的库类)
DataClass(纯稚的数据类)
RefusedBequest(被拒绝的遗赠)
Comments(过多的注释)
要点:
- 如果在原来的代码基础上添加新特性有困难,那么先重构再添加新特性。
- 重构前必须有单元测试。
- 任何一个傻瓜程序员都可以写计算机可以理解的代码。 写出人类可以理解的代码才是优秀的程序员。
- 事不过三,三则重构。
- 如果觉得需要注释,先尝试重构。
- 如果有 bug, 先写一个单元测试来暴露这个 bug.
- 考虑边界条件。
- 别忘了检查在该出问题的地方是否抛出了异常。
TRUST WITHOUT WAVERING