博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重构----学习心得
阅读量:4981 次
发布时间:2019-06-12

本文共 1637 字,大约阅读时间需要 5 分钟。

1、重构技术系以微小的步伐修改程序。如果你犯下错误,很容易便可发现它。

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

3、重构在动词上可理解为:使用一系列重构准则(手法),在不改变“软件之可察行为”的前提下,调整其结构。

4、重构的另外一个原因:为了帮助我理解需要修改的代码。这些代码可能是别人写的,也可能是自已写的。

 

when:

  1、Duplicated Code(重复的代码):同一class中重复代码可选择提取出方法,然后调用;互为兄弟class,则可选择提取出类superclass;如果2个毫不相关的class,

    则可以考虑对其中一个使用extract class,提取出重复代码到一个独立的class,然后在另外一个class内使用这个新类,所以决定这个函数放在那最合适才是最重要的,

    至少要确保它被

  2、Long Method(过长函数):每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数,并以其用途命名。ps:如果函数内有大量的参数和临时变量,

    它们会对你函数提炼形成障碍。如果只是单单的Extract Method,只会使参数和临时变量转换为参数,并没有多大提升。可以采用Replace Temp with Query来消除这些元素。

    Introduce Paramter Object 和 Preserve Whole Object则可以将过长的参数列变得简洁一些。如果上述步骤都试过了,任然有太多临时变量和参数,那就应该采用Repalce 

    Method with Method Object。如果存在条件式和循环常常也是提炼的信号。可以采用Decompose Conditional处理条件式。至于循环,则是提炼为一个函数。

 

何时不该重构:1、有时候既有代码实在太混乱,重构它还不如重新写一个来的简单。

       2、项目已近最后期限,也应该避免重构。

 

 ps: 哪怕你完全了解系统,也请实际测量它的性能,不要臆测。臆测会让你学到一些东西,但十有八九你是错的。

 

eg:如果在去旧留新的代码基础上,保留新接口的功能,在旧接口与新接口差距不大的情况下,可以通过对旧接口返回数据封装VO的方法,保证在改变

接口写法的前提下,旧接口返回的数据接口任然不变。

 

解释:

Replace Temp with Query 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785693.htmlIntroduce Paramter Object 可参考 http://book.51cto.com/art/201002/182694.htmPreserve Whole Object 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785695.htmlRepalce  Method with Method Object 可参考 http://my.oschina.net/u/134516/blog/127200 or http://blog.csdn.net/bendan999999999/article/details/3255156Decompose Conditional 可参考 http://www.cnblogs.com/matchcolor/archive/2010/07/27/1785697.html

  

重构手法:引用 -- http://www.cnblogs.com/matchcolor/tag/%E9%87%8D%E6%9E%84/

转载于:https://www.cnblogs.com/binbang/p/4953092.html

你可能感兴趣的文章
SSH整合报错:No result defined for action and result input
查看>>
1963-带妹子去看电影
查看>>
数据结构和算法之栈排序
查看>>
HBASE的预分区设计
查看>>
大道至简第三章读后感
查看>>
java中JDK、JRE、JVM的关系
查看>>
mybatis面试常见题
查看>>
EXCEL转html
查看>>
对象和XML之间的序列化和反序列化
查看>>
cSELECT
查看>>
第六章 类文件结构(待续)
查看>>
头文件与函数定义分离
查看>>
ECUST 12级 Practise
查看>>
罗马数字转换成整数
查看>>
gearcache在qemu-kvm虚拟化平台下的实现
查看>>
.Net生成HTML的三种方法
查看>>
HTML&CSS基础学习笔记1.8-预格式文本
查看>>
PSexec以及xcopy的简单使用
查看>>
Postgresql迁移数据文件存放位置
查看>>
性能优化——存储性能优化
查看>>