代码重构的基本认知

更新日期: 2019-06-16阅读: 2.3k标签: 重构

代码不可能在第一次就写得完美,这是一个持续修改的过程,那么应该怎么来进行呢? 以下内容来自《重构-改善既有代码的设计》


是什么

  • 好代码的检验标准就是人们是否能轻而易举地修改它。
  • 由于预先做出良好的设计非常困难,想要既体面又快速地开发功能,重构必不可少。
  • 重构的意义就在于:你永远不必说对不起,只要把出问题的地方修补好就行了。
  • 重构过程的精髓所在:小步修改,每次修改后就运行测试。
  • 重构的最佳时机就在添加新功能之前。
  • 我不专门安排一段时间来重构,而是在添加功能或修复bug的同时顺便重构。
  • 与其猜测未来需要哪些灵活性,需要什么机制来提供灵活性,我更愿意只根据当前的需求来构造软件。


做什么

  • 数据结构才是一个健壮程序的根基。
  • 消除重复。
  • 函数是我们将程序拆分成小块的主要方式。
  • 根据一个函数的意图(做什么)来对它命名。
  • 只要改名能够提升代码的可读性,那就应该毫不犹豫去做。
  • 如果某些数据和某些函数总是一起出现,某些数据经常同时变化甚至彼此相依,这就表示你应该将它们分离出去(比如提炼类)。
  • 一个好的模块化的设计,"封装"是最关键的特征之一。"封装"意味着每个模块都应该尽可能少了解系统的其他部分。
  • 尽量遵循命令与查询分离原则。
  • 大部分条件逻辑只用到了基本的条件语句,但如果发现复杂条件逻辑,多态是改善这种情况的有力工具
  • 合理的继承关系是在程序演化的过程中才浮现出来的:我发现了一些共同元素,希望把它们抽取到一处,于是就有了继承关系。


注意什么

  • 数据被使用得越广,就越是值得花精力给它一个体面的封装。
  • 如果可访问范围变大,重构的难度就会随之增大,这也是说全局数据是大麻烦的原因。
  • 将一个值用于多个不同的用途,这就是催生混乱和bug的温床。
  • 如果你不知道该做什么,这才是注释的良好运用时机。
  • 重构过程的性能问题:大多数情况下可以忽略它,如果有性能损耗,先完成重构,再做性能优化。
  • 如果重写比重构还容易,就别重构了。


一直在追问自己要不要总结一篇这样偏理论性的文章。其实大部头的书不太容易静下心来读,那么我就把一些基本的知识晒出来,让看到的人产生思考,然后能去读原书。就算不读这本421页的《重构》也能对重构有一个基本的了解,方便在日后遇到问题时,知道去哪里寻找答案。

原书总结了常用的上百种重构手法,如果真正理解了什么是重构,自己也可以创造一些手法,实际的业务场景才是重构的最好战场。

原文来自:http://www.affecthing.com/20190615/refactoring/


链接: https://fly63.com/article/detial/3737

web页面的重构和回流【转载】

在了解什么是重构和回流之前,我们应该先看看浏览器是怎么渲染的?浏览器的渲染过程;什么是重构和回流;什么操作会引起重绘、回流;浏览器对回流的优化;如何减少回流、重绘

web页面重构和前端性能优化

在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为;你有用过哪些前端性能优化的方法?减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适

代码重构!你敢吗?

我从基础架构部门,转调到业务部门。技术负责人想让我搞定业务系统的稳定性问题。当时的业务系统确实存在不少问题,不过我初来乍到,对整体系统不熟悉,就想在熟悉一段时间后再动手。

前端项目重构要点总结

项目是公司主打业务产品之一的可视化子项目,与其他子项目几乎没有耦合,所以可以单独拎出来重构。具体业务不作描述。技术主要用的是Vue2系列和JavaScript,还有一个自研的可视化工具库。第一个重构原因就是没有引入静态类型

重构保持函数的单一职责

单一职责的定义可以理解为:一个对象或者方法,只做一件事。遵守单一职责的实例太多了,下面简单列举一下。说是这样说,但是大家看着可能会有点懵,看不出来遵守单一原则有什么好处,下面看一个实例。

指尖前端重构(React)技术调研分析

React是当前前端应用最广泛的框架。三大SPA框架 Angular、React、Vue比较。Angular出现最早,但其在原理上并没有React创新的性能优化,且自身相对来说显得笨重。Vue出现最晚,其核心原理学习了React

web前端代码重构

1. 整理一套vscode中格式化配置,在页面保存时自动格式化,团队成员格式统一(搭配eslint)。2. 整理项目中的命名(不要嫌长,但也不能过于冗长,尽量能让人一眼看明白)

JavaScript重构技巧-让函数简单明了

JavaScript 是一种易于学习的编程语言,编写运行并执行某些操作的程序很容易。然而,要编写一段干净的JavaScript 代码是很困难的。

代码重构的实战经验和那些坑

我在一家创业公司的小团队里搞软件开发。彼时我们有一位真实的企业客户,且软件的第一版也已发布。开发按进度完工,在发布时我欣喜若狂

前端的自动化重构

过去,我一直想着抽时间写一个小的前端工具,以对代码进行自动化的重构。但是呢,经过我再三的考虑,我暂时取消了这个打算 —— 主要是没时间

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!