我是靠谱客的博主 精明野狼,最近开发中收集的这篇文章主要介绍读《重构》的读书笔记第一章spring中第二章第三章,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一章

重构的目的

  • 让你以更少的工作量的对程序添加新特性。

重构的技巧

  • 构建可靠的、可以自我检验的测试环境,因为对比测试结果会浪费大量时间
  • 注意返回值范围与是否需要浮点数的问题,比如返回int还是double,返回int还是long
  • 分解长代码
    • 代码块越小,它的处理和移动越轻松
    • 好的代码应该清楚地表达自己的功能,而变量是实现这一点的关键
    • 如果某段代码只用到了一个类中的数据,那应该考虑这段代码是否放错了位置,他是否本应该是该类的某个方法、某个功能。
  • 去掉只用一次的临时变量,使用查询性质的函数代替临时变量

从改造getTotalCharge和getTotalFrequentRenderPoints的例子来看,代码可读性经常与高性能是一对冤家,二者经常不能同时达到,比如作者在这里就对同一集合做了三次循环。

  • 当同一段数据处理在多个类中都可以时,我们要选择那个在未来最可能变化的那个类中进行处理。这样可以限制未来变动带来的影响(假设A/B两个类,B更容易变化,那我选择在B中写处理A、B数据的代码,将来B变化,我只需要改B类,而不需要去改动A类)

    比如,在实际开发中,同一段A表B表连表的SQL可以写在AMapper.xml、BMapper.xml中都可以,那现在应该看未来AB那个表更容易变化,那我就在哪个表中写这段SQL

  • 当多条件判断后有不同的逻辑时,我们可以将不同的条件后的逻辑抽象出来成为一个abstract类,然后扩展多个子类,从而将不同的条件的逻辑处理实现到相同的方法中去。当然我们还需要多条件判断注入不同的子类,只不过我们原有的程序本来面对的是不同条件下的不同逻辑处理,现在使用了State模式后,面对的是不同的abstract类的子类,我们将不同的逻辑抽离出去,以后想修改哪个条件下的逻辑,可以直接去对应子类中去修改,达到了解耦的效果

  • 期间,我们还可以使用默认方法的方式为abstract类提供一个默认实现

spring中

保证service之间的引用都是树状的,不是网状的。是按照业务逻辑一个层级一个层级的树状结构,才可以避免循环依赖。

第二章

  • 重构就是整理代码,让代码回到它该去的地方
  • 待代码趋于整洁后,我们看一看到一些设计层面的东西
  • 搞清楚代码结构后,更容易揪出bug
  • 良好的设计可以提升开发速度,因为它会让你减少花在调试上的时间和添加新功能的代码
  • 重复做了三次类似的事情,那么应该重构了
  • 重构的三个时机
    • 添加新功能
    • 修复错误时
    • 复审代码时
  • 大多数重构都是为程序引入更多的间接层

第三章

代码的坏味道

  • 重复代码
    • 同一个类的两个函数有相同的表达式,重复代码拿出来
    • 互为兄弟的两个类有相同的函数,抽象到超类中
    • 两个完全不相关的类有相同的代码,考虑逻辑是否有问题
  • 过长函数
    • 每当想写点注释的时候,我们就要考虑将接下来的代码抽出来作为一个方法,以其用途作为方法名
    • 条件表达式和循环也是提炼的信号
  • 过大的类
  • 过长的参数列表会影响对该方法的理解
  • 一个类受多种变化的影响
    • 应该找出修改多处的原因,将其提炼到另一个类中
  • 当有一处修改需求时,需要修改多处
  • 一个类中的某个函数过度依赖另一个类
  • 当若干个(两个及以上)数据项在多个类中都重复出现了,那么应该将这些重复数据项提炼到一个类中,哪怕在某个地方只使用了这个新类的其中两个字段也是值得的
  • switch语句
  • 一个类没怎么被用到
  • 删掉认为“未来可能用到”的代码,比如参数列表,钩子,接口
  • 一个类中某些字段只是在某种特殊情况下才会用到,但这样的字段会让人confuse的
  • 过度运用委托,太多“不干实事”的类出现
  • 子类只使用到一部分超类的代码
    • 应该创建一个兄弟类,把使用不到的代码推给兄弟类,保证超类中存放的是所有类都用到的代码
  • 当想写注释时,可以使用抽象出方法,通过方法名来表明你的意图,而不是通过注释

最后

以上就是精明野狼为你收集整理的读《重构》的读书笔记第一章spring中第二章第三章的全部内容,希望文章能够帮你解决读《重构》的读书笔记第一章spring中第二章第三章所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部