美文网首页
读《重构》

读《重构》

作者: 飞飞的蜗牛 | 来源:发表于2020-07-18 09:54 被阅读0次

一. 这本书在谈什么?

《重构》是程序员里面很经典的一本书,有人曾说,做面向对象开发,就是左手设计模式,右手重构,说的很在理。其实重构的方法和逻辑也都是基于设计原则的,比如单一职责原则,最少知识原则。当然,重构的前提是在不改变对原有系统的功能的基础之上做的设计优化,可以提高其可理解性,降低其修改成本。

二. 这本书细节部分都讲了什么?

1.重构的方法论

  • 重构也是避免你的代码越来越复杂和难以维护的重要手段,当你发现你的代码已经很难添加新的功能时,就要考虑是否重构了。
  • 作者提到一个重构的关键做法,就是测试,引入测试,是确保你的重构能够正常和确保原有系统功能的重要保证。而且提倡你小步快跑,而不是每次重构都变得难以恢复,应该是改一点,测一点,直到全部重构完成。另外,测试不需要测试所有的功能,而应该放在你觉得容易出错的地方即可。
  • 改进设计的一个重要方向就是消除重复代码。
  • 良好的设计是快速开发的根本
  • 重构往往是把大型对象拆成多个小型对象,把大型函数拆成多个小型函数,这个和架构设计里面常说的“分而治之”有异曲同工之妙。

2. 几个关键的认知

  1. 让代码自解释,好的代码应该是不需要注释就能让别人能够看懂,明白你的代码逻辑的,因此,包括变量名、方法名等都应该做好清楚,明白。
  2. 函数和它说使用的数据应该放在一起,如果出现函数和数据分离的情况,就要考虑重构了。
  3. 如果if/else,switch出现的很多,也要考虑重构,重构的技巧是使用多态。

3. 怎么判断代码是否要重构

  1. 重复代码
  • 如同一类中的两个函数有相同的表达式:抽取出来做独立函数;
  • 两个互为兄弟的子类内含相同的表达式: 推入超类;
  • 两个不相关的类出现重复代码:提炼到一个独立类中。
  1. 过长代码
  • 拆分然后让小函数有容易理解的名字;
  • 有过多注释时:拆分为独立函数;
  • 条件和循环:提炼到独立函数。
  1. 过大的类
  • 抽取和拆分类,将数据和行为移到一个独立的领域对象中。
  1. 过长的参数列
  • 太长的参数列难以理解,太多参数容易造成前后不一致、不易使用,而且一旦你需要更多数据,就不得不修改它。
  1. 发散式变化
  • 如果一个类经常因为不同的原因在不同的方向上变化,那就需要将变化的部分迁移到一个新类中。

6.霰弹式修改

  • 如果遇到变化,需要在许多不同的小类中作出很多小修改,那就需要把一系列相关行为放到一个类中。
  1. 依恋情节
  • 将数据和对数据的操作行为包装在一起。这也是封装的终极追求。
  1. 数据泥团
  • 总是绑在一起的数据应该拥有他们自己的对象
  1. switch
  • 面向对象的一个明显特征是:少用switch,应该用多态来替换它。当然,如果只是在一个单一函数中有些选择事例,且不会变化,那就不需要用多态。

10.其他一些情况

  • 过度使用委托,如中间委托类承担了原来类中大半的函数了,那就应该取消中间类,直接让两个对象发生关系
  • 过度使用继承,会造成耦合严重,这时候应该考虑去掉继承关系

4. 重构的一些小技巧

  1. 对于临时变量,如果他们被赋值超过一次,那就意味着他们在函数中承担了一个以上的责任。应该替换成多个临时变量。
  2. 避免对参数进行赋值。(跟使用被传入对象的操作不同)
  3. 数据隐藏,不要使用public来修饰数据。
  4. 将查询函数和修改函数分离

三. 总结

其实重构没有想象中那么复杂,遵循的原则也无非的单一职责、最少知识原则、封装等基础的面向对象的概念,重构不过是按照这些原则来开展代码优化的具体实践,最重要的还是要在工作中结合使用,将这些知识变成自己的技能和习惯,写出好的代码,才能在以后运维中少吃点亏。

相关文章

  • 读重构

    读重构(改善既有代码的设计)一点心得 序言 距离我读重构这本书已经过去了很久,最近需要分享一下读这本书的感悟心得,...

  • 读《重构》

    一. 这本书在谈什么? 《重构》是程序员里面很经典的一本书,有人曾说,做面向对象开发,就是左手设计模式,右手重构,...

  • 读《重构》分享

    2018-10-22 【堆金圈】混沌长沙分社 ---- 谭文-女性私护产品卫生巾运营 今天参加了杨永华老师...

  • 读《重构》笔记

    以项目重构为契机,我读了《Refactoring Improving the Design of Existing...

  • 读《重构》有感

    这本书完美诠释了啥叫工匠精神。选型叫战略,架构叫战术,那编码就是练兵,本书聚焦编码,精神可贵。本书对一开始就做对的...

  • 《重构》-第二章 重构原则 摘录

    最近在重新读《重构》这本书,关于第二章 重构原则,我摘录出一些要点,和大家分享一下。 重构:对软件内部结构的一种调...

  • 代码重构专题(转载)

    代码重构(一):函数重构规则代码重构(二):类重构规则代码重构(三):数据重构规则代码重构(四):条件表达式重构规...

  • 软件中的单一职责原则

    重构项目代码特别是复杂的项目除了像“重构”,“clean code” 之外还是要读点软件工程类的书才行啊。在看Sp...

  • 《重构论——思想,组织,商业,人性,社会,道德,社群的升级交织》

    此文着实烧脑,但句句皆是缘力。 有缘者读之,打开新的世界之门。 社群的发展升级,将重构整个商业世界的底层逻辑,重构...

  • 重构代码之美

    什么是重构; 为什么要重构; 什么时候重构; 怎样避免重构的现象; 重构的难点在哪里; 如何来实施代码重构; 重构...

网友评论

      本文标题:读《重构》

      本文链接:https://www.haomeiwen.com/subject/pulxkktx.html