《重构-改善既有代码的设计》读后小结

何谓重构?

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。如上面提到的各种重构手法。

重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

为何重构?

1 重构改进软件的设计。人们只为短期目的(支持新功能)而修改代码时,经常没有完全理解架构的整体设计,导致程序的内部设计会逐渐腐败变质。

2 重构使软件更容易理解。程序设计,很大程度上就是与计算机对话,编程的核心就在于“准确地说出我想要的”,但是,除了计算机外,源码还有其他读者(未来的开发者)。重构可以让代码更好地表达自己的意图--更清晰地说出我想要做的。关于这点,重命名这个手法应该经常使用,好的名字帮助读者更好的理解代码意图。

3 重构帮助找到bug。重构可以深入理解代码的所作所为,借此找到不易察觉的bug。

4 重构提高编程速度。这是重构的长期价值,让代码与时俱进,减轻或者丢弃历史包袱。

常见重构手法

1 重命名(变量、字段、函数、类)、移动语句、拆分循环、拆分阶段、拆分变量、以查询取代临时变量、以查询取代参数、移除死代码、移除标记参数、移除中间人、移除设值函数、将查询函数和修改函数分离

2 合并条件表达式、分解条件表达式、以多态取代条件表达式、以卫语句取代嵌套条件表达式、以子类取代类型码

3 提炼/内联 + 类/函数/变量

4 封装、提炼超类、折叠继承体系、移除子类、构造函数本体上移、字段/函数+上移/下移、以工厂函数取代构造函数、以委托取代子类/超类(委托取代继承) -- 建议审慎地组合使用委托(对象组合)和类继承

举例:移除标记参数,主要目的是使得函数调用处意图更明确。

function setDimension(name, value) {

if ("height" == name) {

this._height = value;

return;

}

if ("width" == name) {

this._width = value;

return;

}

}

重构后,

function setHeight(value) {this._height = value;}

function setWidth(value) {this._width = value;}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值