重构-读书笔记一

作者: 撒哈拉的海马_敏捷 | 来源:发表于2017-12-13 13:58 被阅读29次

按照本书的说法,我们当前仅限于单个应用,针对分布式应用(跨多个应用的重构不讨论)

重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

目的很明确,其实就是降低后续的维护成本,如果生命周期比较短,我不推荐进行大规模的重构动作。同时这里面就有一个非常大的前提,不改变软件的可观察行为,如果不改名,怎么判定,这个就是需要我们为软件构筑测试体系

影响重构发生的几大障碍:

1、自动化测试体系,没有自动化测试的保障进行重构每一个程序员心里都没有底,比如我们的持续集成调度类,这个类当初是我编写的,现在经过大量的修改我自己都不敢去做大规模重构了,因为没有测试的保障。

2、作用域设置,因为需要重构,而且我在提供团队内部基础组件的过程中发现了这个问题很严重,和书上说的很一致:作用域的问题。我自己现在总结也没有什么好的办法,就是一定要缩小作用域,能多小就多小,只要开放出去了,想对此进行重构都是非常麻烦易出错的事情。

3、一些编码习惯,比如反射,反射这种问题导致在重构发生后编译器无法自动识别错误,导致重构会导致一部分的遗漏,举几个我们自己的例子,我们老的系统中:

a、我们flex的amf绑定关系中使用了类名和方法名,而这种指定是通过类似反射的方式

b、我们的DAOFactory中运用反射来创建DAO

c、我们的任务配置中在数据库中,针对不同的执行计划我们反射加载具体的执行计划任务类

这一些列的动作在我们重构改变类名、方法名、方法参数化的过程中现代的IDE都无法通过编译来告警。

重构方法

提炼函数(extract method)

提炼方法最重要的关注点

有没有局部变量,具体变量后续有没有被使用

a、有后续没有被使用,直接作为方法参数化传递即可

b、有后续会被使用,被使用一般情况下返回参数化即可,同时有可能是多个变量

方法,把多个变量包装成一个对象,使用出参对象作为返回,方法内改变参数的值,比如:

这里有一个关键的问题,java的值传递,我们来看两种类型的例子,基本类型,对象

基本类型:

结果:

这个很好理解,我们来看对象,看代码:

输出对象地址信息:

输出对象详情:

大家可以看到replace的情况,为什么这样,我画个图演示下:

相关文章

  • 重构:读书笔记

    重构读书笔记 第一章 重构,第一个案例 第二章 重构原则 2.1 何为重构 重构(名词):对软件内部结构的一种调整...

  • 重构读书笔记

    title: 重构读书笔记date: 2019/11/05 重构:对软件内部结构的一种调整,目的是在不改变软件可观...

  • 《重构》读书笔记

    《重构》读书笔记 总览 第一部分 第一章从实例程序出发,展示设计的缺陷,对其重构可以了解重构的过程和方法。 第二部...

  • 《危机与重构:唐帝国及其地方诸侯》读书笔记

    《危机与重构:唐帝国及其地方诸侯》读书笔记 李碧妍先生的《危机与重构:唐帝国及其地方诸侯》一书。是以唐代后期的藩镇...

  • 《重构--改善既有代码的设计》读书笔记

    《重构--改善既有代码的设计》读书笔记 1为什么重构有用 所有有意义的事情总结下来,都是完成了一个有用的功能,或者...

  • 重构-读书笔记一

    按照本书的说法,我们当前仅限于单个应用,针对分布式应用(跨多个应用的重构不讨论) 重构:对软件内部结构的一种调整,...

  • 个人技术文章系列汇总(csdn)

    Java基础 Effective Java读书笔记 java 几种加载驱动的方法 《重构改善既有代码的设计》代码的...

  • 《重构》读书笔记

    chapter 1 重构,第一个案例 1.1 什么时候需要重构 需要为程序添加一个特性,但代码结构无法使自己方便的...

  • 重构-读书笔记

    有一本书叫做《重构 改善既有代码的设计 》,个人感觉写的还蛮不错的,在读这本书时候做的一些读书笔记,分享给大家: ...

  • 重构-读书笔记

    重构 概念:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构技术就是以微小的步伐修改程序。...

网友评论

    本文标题:重构-读书笔记一

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