读《重构(Ruby版)》

代码不仅仅是写给机器运行的,也是写给人看的。

不要仅仅是为了设计纯粹性而重构

What’s refactoring ?

重构是什么?

名词形式:对软件内部结构的一种修改,在不修改软件外观行为的条件下,使之更易于理解和修改。
动词形式:在不改变软件外观行为的条件下,通过运用一系列的重构技术重新组织软件的结构。

强调:
  • 重构的目的是要让软件编的更加容易理解和修改。
  • 重构不会改变软件的外观行为。

why should you refactor ?

为什么重构?
  • 重构可以改进软件的设计
    • 消除冗余代码
  • 重构让软件变得易于理解
  • 重构可以帮助你发现bug
  • 重构可以有助于更快地编程
    • 改善设计
    • 改善可读性
    • 减少bug
      以上三点保障了开发速度

when should you refactor ?

什么时候需要重构?
  • 事不过三
  • 在添加功能时重构
    • 有助于理解即将修改的代码
    • 提升设计,使之便于添加功能
  • 在需要修复bug时重构
  • 在代码复审时重构
    • 代码复审发挥到极限就是极限编程实践中的结对编程。从效果上来讲,就是在开发流程中植入持续不断的代码复审和重构。
  • 为了更好地理解而重构

why refactoring works ?

为什么重构能起作用?

让人难以应付的程序特点:
* 难读的程序也就难以修改
* 有冗余逻辑的程序难以修改
* 在添加新功能时需要修改现有代码的程序很难修改
* 有复杂条件逻辑的程序很难修改

重构可以简单地表达条件逻辑,为程序添加价值,提供更多品质,以保证持续高效地进行开发。

抽象和重构

抽象的价值:
  • 共享逻辑
  • 分开解释意图和实现
  • 隔离变化
  • 编码条件逻辑

重构和性能

常见的三种快速软件的方法
  • 时间预算法
    • 严格控制每个组件分配资源预算——时间和执行轨迹
  • 定期关注法
    • 随时保持性能高效
  • 利用90%的统计结果

* 首先在分析器下运行程序,找到程序里性能热点的位置。然后专注于这些热点进行性能优化。

代码里的坏味道

  • 重复代码
  • 方法过长
    • 激进方法:需要注释的时候,写一个方法代替注释
  • 类太大
  • 参数列表太长
  • 发散型变化
  • 霰弹型修改
  • 特性依赖
  • 数据泥巴
  • case语句
    • 用多态替换
  • 平行继承体系
  • 冗赘类
  • 纯臆测的泛化
  • 临时字段
  • 消息链
  • 中间人
  • 过分亲密
  • 异曲同工的类
  • 不完善的类库
  • 数据类
  • 被拒绝的遗赠
  • 注释
  • 狂热的元编程
  • 脱节的API

* 不断重复的样板文本

构建测试

添加新功能之前,应该先从编写测试开始。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值