重构原则(一)
来源:互联网 发布:免费qq软件下载 编辑:程序博客网 时间:2024/05/15 23:44
知识点的梳理:
- 重构(名词定义):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本;
- 重构(动词定义):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构;
- 在添加新功能时,不应修改现有代码,只管添加新功能;在重构时,不能添加新功能,只管改进程序结构;
- 何时重构?
- 三次法则:第一次做某件事时只管去做;第二次做类似的事会产生反感,但无论如何还是可以去做;第三次再做类似的事,就应该重构;
- 事不过三,三则重构;
- 添加新功能时重构;
- 此时重构的直接原因往往是为了帮助我们理解需要修改的代码;
- 在前进过程中,把代码结构理清,可以从中理解更多的东西;
- 修补错误时重构;
- 当程序发生错误的时候,就是需要重构的信号,因为显然代码还不够清晰,没有清晰到让你能一眼看出BUG;
- 复审代码时重构;
- 什么代码需要重构?
- 难以阅读的程序,难以修改;
- 逻辑重复的程序,难以修改;
- 添加新行为时需要修改已有代码的程序,难以修改;
- 带复杂条件逻辑的程序,难以修改;
- 因此,我们希望程序:
- 容易阅读;
- 所有逻辑都只在唯一地点指定;
- 新的改动不会危及现有行为;
- 尽可能简单表达条件逻辑;
- 何时不该重构
- 代码太混乱,重构它不如重新写一个。
- 项目已到最后期限;
- 重构要点
- 如果发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性;
- 重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力;
- 重构技术就是以微小的步伐修改程序。如果犯了错误,可以很容易的发现它;
- 不要多早发布接口。请修改你的代码所有权政策,使重构更顺畅;
- 当你感觉需要撰写注释时,请先尝试臭狗狗,试着让所有注释都变得多余;
- 确保所有测试都完全自动化,让它们检查自己的测试结果;
- 一套测试就是一个强大的bug侦测器,能够大大缩减查找bug所需要的时间;
- 频繁地运行测试。每次编译请把测试也考虑进去---每天至少执行每个测试一次;
- 每当你收到bug报告,请先写一个单元测试来暴露这个bug;
- 考虑可能出错的边界条件,把测试火力集中中在那儿;
- 当事情被大家认为应该会出错时,别忘了检查是否抛出了预期的异常;
- 不要因为测试无法捕捉所有bug就不写测试,因为测试的确可以捕捉到大多数bug;
阅读全文
0 0
- 重构原则(一)
- 重构代码学习笔记一:重构的原则
- 重构代码学习笔记一:重构的原则
- 重构-重构原则
- 重构的原则
- 重构原则
- 二、重构原则
- 重构的原则
- 重构原则
- 重构原则总结
- 重构的原则
- 重构原则
- 重构的原则
- 代码重构原则
- 重构原则
- 《重构--改善既有代码的设计》总结一之重构原则
- 重构(一)
- 重构(一)
- laravel -- Eloquent 模型关联
- ListView中存在EditText,弹出键盘后焦点丢失问题。
- Centos7.3_64位安装Apache2.4_mysql5.7_php5.4(阿里云LAMP php环境搭建图文教程)
- 最长递增子序列
- 焦点图,轮播图效果
- 重构原则(一)
- 工程之间的跳转
- 数据结构实验之栈五:下一较大值(一)(二)
- Hibernate学习3 二级缓存和延迟加载
- Shell脚本语法篇
- 51 nod 区间交 (优先队列)
- 非对称加密
- 手写matlab的迪杰斯特拉(dijkstra)算法的函数(注释很详细)
- 现代前端技术解析:前端跨站技术