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

[美] 马丁·福勒(Martin Fowler) 著

随便说说

重构的定义

用做名词:在不改变软件的前提下,提高其,降低其的手法。
用做动词:使用一系列,在不改变软件可观察行为的前提下,。

正文节选总结

  1. 傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码的,才是优秀的程序员
  2. 只有充分理解需求,才能够做好设计。但的存在使它总是不能够达到。
  3. 好代码的检验标准:是否能轻而易举地修改它。
  4. 设计总是在时间流逝中逐渐腐坏,但重构可以改变这一观点。
  5. 设计耐久性假说:通过投入精力,我们增加了,从而可以更长时间地。
  6. 持续集成(CI)需要拆分功能的能力,需要项目支持特性开关。
  7. 不要隔离团队内成员的代码,应该让成员可以监控到各自的代码责任区的变化。
  8. 不要过度设计,未来的变化可以交给重构,当下只需要写需求中的功能。
  9. 再次强调:代码的自测试很重要
  10. 是编程中最难的两件事之一。另一件是(一致性问题)。
  11. 想不出好名字,往往是设计还不够到位
  12. 可以做点什么重构

    做一些使添加新功能更容易
    在时重构使功能更容易被理解
    观察代码时发现某些功能可以
    有计划的重新发现可能重构点
    在解决旧的时进行长期的重构

  13. 如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序。
  14. 勇敢地把做了过多事情的循环拆分成多个循环函数。
  15. 将总是一起变化的东西放在一块儿。
  16. 每当你感觉需要注释来说明的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。
  17. 应该重构的内容:原文有24种,此处提炼成8种

    隐藏:信息过多或过少都会无法控制。原文:、和
    重复:重复的信息浪费脑细胞。原文:、和
    堆积:冗长的内容总是难以被理解。原文:、、、和
    共享:多个实体控制同一份数据。原文:、和
    关联:一个修改必须同时进行其他几个修改。原文:、和
    无效:没有调用,过度封装,历史代码注释。原文:、、和
    偏执:常用的数据类型就直接定义出结构来,将循环做的事情进行拆分而更清晰。原文:和
    错误:子类只实现父类的部分功能等。原文

  18. 应该重构的内容达到什么再进行重构需要经验
  19. 每次进行一小步。每一步测试成功的修改,都做一次本地提交。
  20. 重构过程不需要特别在意,因为重构只为了代码、。
  21. 需求的变化使重构变得必要。如果一段代码能正常运行,需求不再变化,那它不需要重构。
  22. 因为需要把控成本,所以无需一次做到极致,但应该遵循营地法则:保证你离开时的代码库一定比来时更健康
  23. 不要告诉经理你正在进行重构,自行将其安排到你的每一项工作中去。
  24. 重构后运行过慢重构出容易调优的代码,再对它进行调优。
  25. 调优一般有:(预先定义每个组件的时间占用和空间占用)、(随时保持系统的高性能,通常效果不好)。
  26. 调优必须在数据的支持下,否则将“劳而无获“。
  27. 不要在测试之间共享数据。
  28. 断言之前产生的测试错误,可以尝试在代码中引入预先的错误断言来阻断。
  29. 每当有一个BUG被发现,就应该先写一个测试来暴露这个BUG

补充一个常规的重构流程

  1. 确保即将修改的代码拥有一组。
  2. :抽离需要结构化的函数部分构成一个新函数。
  3. :临时变量实质上是鼓励你写长而复杂的函数。
  4. :变量名需要让读者可以顾名思义。
  5. :在需要修改的地方,将原函数提炼成两个函数

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月21日
下一篇 2021年5月21日

相关推荐