2019独角兽企业重金招聘Python工程师标准>>>

重构的基本原则之一:不改变软件的可观察行为。

这一基本原则阐述的是我们在做重构的时候,维持外部的功能外观不变,让用户无法感知重构的变化。其实这很好理解,重构与添加新功能两者的角色仿佛总是对立的。添加新的功能与重构所做的事情应该恰恰相反:不应该修改既有的代码,只是添加功能而已。

我们总是在不知不觉中切换两者的角色,业务需求总是要我们添加新的功能,但是我们在开发过程中会发现,如果重构一下代码,可以更优雅的添加我们的功能。所以你会发现两者其实并非绝对对立:重构为了更好的增新,增新则会带来新的重构。

这与中国道家的阴阳理论不谋而合,“奇正相生,如循环之无端,孰能穷之。”没有一劳永逸的重构,在代码的编写上,重构与增新总是循环往复,交织在一起。分清你现在的角色就显得很重要了,重构的时候一定要牢记自己的原则与初衷,这样才不会在重构上偏的太远。

重构的时间原则:理论上,当你感觉到代码让你写起来觉得恶心的时候,意味着重构的时机已到。没有什么特定的时间去重构,想到了就去做,随时随地,不用为重构留出特意准备的时间,你会发现你定好的时间总是或早或晚,早了没有必要,晚了则承受了太多痛苦。但是在项目的开发中,我们总要遵循一定的规范,那么我建议是下面三个时机是最好的。

1.添加功能的时候。最重要的时机,你总会在新增功能的时候发现设计上不合理的时候,这是你可以体会你设计上优缺点最敏感的时候,不要错过这个时机。

2.修复BUG的时候。错误往往是由于你的设计不合理而产生的,设计上的不合理会让你产生对代码的误解,从而在修改代码的时候引入新的错误。如果你的项目中总是有一些无法一眼看到的BUG隐藏在角落里,那么这个时候你就需要考虑去重构你的代码。

3.审核代码的时候。审核代码一般都是很多人在一起或者是一个老手在审核你的代码,人们往往总是针对一个熟识的东西会无意识的过滤其优缺点。代码也是,我们需要别人给我们提供建议,他们的建议是站在别人的角度,这对于我们是尤为重要,代码是要给人读的,能写出给机器读的代码很容易,写出给人读的代码才是高手。

转载于:https://my.oschina.net/hantianyu/blog/715669

重构随笔——重构的原则相关推荐

  1. 重构(一)-重构的意义与原则

    --本文是参考Martin Fowler的<重构>一书做的总结. (一)什么是重构? 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本. (二 ...

  2. 重构 代码重构原则 总结

    重构定义 如果你发现自己需要为程序添加一个特性 而代码结构使你无法很方便地达成目的 那就先重构那个程序 使特性的添加比较容易进行 然后再添加特性 重构之前 首先检查自己是否有一套可靠的测试机制 这些测 ...

  3. 重构html布局,网站重构|网页重构|浏览器兼容|div+css布局|psd转html|概念网络

    什么是网站重构 网页重构就是把"没有采用Div+CSS布局的网站,大量使用HTML进行定位.布局,或者虽然已经采用Div+CSS,但是未遵循HTML结构化标准的站点"变成" ...

  4. .NET重构—单元测试重构

    阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...

  5. python重构_重构Python应用程序以简化操作

    python重构 Do you want simpler Python code? You always start a project with the best intentions, a cle ...

  6. 15-5重构_重构-糟糕,我一直在向后做。

    15-5重构 by Justin Fuller 贾斯汀·富勒(Justin Fuller) 重构-糟糕,我一直在向后做. (Refactoring - oops, I've been doing it ...

  7. 【重构】重构概要--六大重构模块

    重构方法介绍: 重构改善既有代码的设计 一 重新组织函数 关于注释 :要尽可能少的使用注释 , 注释越多代码的可读性反而更差,注释可以使用函数名来代替 , 不要管函数名有多长, 即使函数名比函数中的代 ...

  8. 大话重构 之 重构,企业级应用的圣经

    为何重构如此重要? 说到重构,估计所有程序员都能想到出自Martin Fowler的<重构>一书.这本书究竟到了什么样的高度呢?有人这样说: 如果说<设计模式>是程序设计层次的 ...

  9. java重复代码重构_重构重复代码

    java重复代码重构 As a software engineer working on a large project, you'll likely be asked to do cleanup w ...

最新文章

  1. 数据结构--Javascript--排序篇
  2. pycharm调出参数提示气泡
  3. 信息学奥赛一本通C++语言——1007:计算(a+b)×c的值
  4. Hyper-V损坏数据恢复报告
  5. centos安装mysql怎么远程访问_centos上安装mysql并设置远程访问的操作方法
  6. 计算机组成原理李玉玲,2005年高等教育国家级教学成果奖初审结果公告-山东大学.DOC...
  7. 两个HC-05蓝牙模块互相绑定构成无线串口模块
  8. c语言计算器括号怎么解决,C语言计算器,该如何解决
  9. 中望3D 2021 线框设计“提取中心线”
  10. 第三方网站接入秀米,实现秀米编辑的文章同步到自己的网站平台
  11. lpx寒假作业案例1
  12. Spring Cloud Gateway 解决跨域问题
  13. Jenkins邮件通知模板(Git修改版)
  14. idea类存在找不到解决办法
  15. request.setAttribute的用法
  16. Qt开源作品33-图片开关控件
  17. C# 读取处理超大TXT文本文件
  18. arping命令使用方法
  19. java unicode 转换_Java unicode中文编码转换和反转
  20. python大数据毕业设计题目100例

热门文章

  1. 实习技术员的基本功(十一)
  2. PureMVC在Unity游戏开发中的应用
  3. java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别
  4. android标题栏的属性,android – 属性“titleTextStyle”已经定义?
  5. 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...
  6. java this() super()_java中的this和super
  7. easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?
  8. java 找不到构造函数_JAVA找不到符号构造函数
  9. IntelliJ IDEA tomcat配置
  10. MySQL 正则表达式