《重构 改善既有代码的设计》读书总结

重构&原则

  1. 如果程序需要添加功能时,代码结构无法是你很方便的达成目的,请先重构程序代码。
  2. 重构第一步:为即将取代的代码建立一套可靠的测试环境。
  3. IDEA EXTRACT METHOD快捷键CTRL+ALT+M。
  4. 任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。
  5. 临时变量往往会助长冗长而复杂的函数,尽量出去多余的临时变量。有时去除临时变量需要付出性能上的代价,但这是优化时的问题。
  6. 方法应该被放在合适的类中。
  7. state模式(Gang of four)
  8. 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
  9. 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
  10. 为何重构:改进软件设计 使软件更容易理解 帮助找到bug 提高编程速度。
  11. 何时重构:三次法则,第三次写类似的代码则进行重构。
  12. 重构接口时:让旧接口调用新接口。修改函数名时,让旧函数调用新函数。
  13. 编写快速软件:首先写出可调的软件,然后调整他以求获得足够速度(更高性能)。

代码的坏味道

  1. Duplicated Code
    Extract Method(110)提炼重复代码
    Pull Up Method(332)推入超类
    Form Template Method(345)
    Substitude Algorithm(139)选择清晰的方法替换其他相同功能的方法。
    Extract Class(149)

  2. Long Method
    在早期编程语言中子程序调用需要额外开销,但现在Object-Oriented语言中几乎已经完全免除了进程内的函数调用开销。
    尽管小函数需要我们经常转换上下文查看子程序在做什么,但只需给每一个小函数起一个好名字就会事半功倍。我们应该更积极的分解函数。
    Extract Method根据用途提炼新函数。
    Replace Temp with Query消除小函数中的参数和临时变量。
    Introduce Parameter Object(295) Preserve Whole Object (288)将过长的参数列变得简洁。
    Replace Method with Method Object(135)
    如何该确定提炼哪一段代码:寻找注释。注释后的代码往往可以提取成一个函数。
    条件表达式和循环常常也是提炼的信号 Decompose Conditional(238)处理条件表达式。

  3. Large Class
    Extract Class
    Extract Subclass
    Extract Interface

  4. Long Parameter List
    太长的参数列难以理解,太多参数会造成前后不一致,不宜使用。
    Replace Parameter with Method(292)。
    Preserve Whole Object(288) 用对象替换参数队列。
    Introduce Parameter Object(295)制造一个参数对象。

  5. Divergent Change(发散式变化)
    Extract Class找出某特定原因引起的所有变化提炼到同一个类中。

  6. Shotgun Surgery(散弹式修改)
    Move method&Move FIled将所有需要更改的代码放进同一个类。

  7. Feature Envy(依恋情结)
    对象技术的全部要点在于:将数据和对数据的操作行为包装在一起。
    但是当函数对某个类的兴趣高于对自己所处类的兴趣时,则需要Move method。

  8. Data Clumps
    Introduce Paramter Object
    Preserve Whole Object
    简化参数列表,不用在乎函数只用上新对象的一部分参数,只要以新对象取代两个字段就值回票价了。

  9. Primitive Obsession

  10. Switch Statements
    利用多态可以解决swich语句带来的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值