博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的重构步骤:重构两份过程一致、中间数据类型不一致的超长函数
阅读量:7111 次
发布时间:2019-06-28

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

本次重构应该先后有 8项小工作 需要做:

一、分解函数,将超长函数分解为若干个小函数,然后在原函数中调用。(只分解一份,另一份先不要动)

二、新建一个类, 把分解后的小函数 及被分解的原函数 复制到该类中, 并将被分解的原函数的访问修饰符 修改为public。

三、处理新类,将新类中 访问不到的东西【因为代码是复制过来的,很有可能某些东西访问不到了】,借助类的全局变量或参数 处理掉。直到可以通过编译,即没有语法错误为止。

四、建立一个新类的对象,并调用其中的public方法,将原有方法替换掉【此时需要注意步骤三中访问不到的数据,酌情处理】。

五、注释掉不需要的代码。编译、调试。

完成步骤五后, 重构超长函数就基本完成了。

六、找出两份代码中 中间数据不一样的类型,然后用其公共“父类型”代替【例如:object】。

七、处理类型转化,注意防止类型转换失败,还有空指针。

八、处理第二份源码,需要从依次完成步骤 四、五、六、七。

 

像这样的重构,最关键的是类型处理 和 类型转化,应该选用最恰当的类型,object 并不是最好的选择。

重构 可以看作是一点一滴的复制修改代码,并伴随不断的编译调试,如果涉及到的逻辑有些复杂最好配合测试用例一起重构。

 

——————————————————————————————————————————————————————————

——————————————————————————————————————————————————————————分割线

上面说的是重构的大致步骤,现在开始说重构的几个细节。

一、分解超长函数时,分解局部变量的技巧 【代码特征,重复利用变量、一个变量将代表N种含义】

代码大致如下:

int index = 0;// 使用index...index = 15;// 使用index...index = -10;// 使用index...

此时可以以三次index的赋值为分解点,分别分解为 index1 index2 index3三个变量,然后使用对应变量。此时就可以轻松分解函数了。

二、寻找合适的 “父类型”

string 和 TextBox 有公共的父类型,是 TextBox, TextBox有Text属性、可以记录string。【呵呵,一个例子就能说明问题了】

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/08shiyan/archive/2013/04/09/3010805.html

你可能感兴趣的文章
Ubuntu中Nginx的安装与配置
查看>>
《资本论》读书笔记(1)谁偷了我的奶酪
查看>>
ReactJS实践(一)—— FrozenUI React化之Loading组件
查看>>
jquery easyUI中combobox的使用总结
查看>>
javascript closure
查看>>
移动WEB问题小结
查看>>
ios调用dismissViewController的一个小陷阱
查看>>
[Android Pro] static 和 Volatile 的区别
查看>>
深入理解PHP内核(八)变量及数据类型-预定义变量
查看>>
linker command failed with exit code 1 (use -v to see invocation)
查看>>
播放后台音频
查看>>
2.vo传参模式和ModerDriven传参模式
查看>>
多线程 这一篇仔细看
查看>>
Nokia 920板砖自救(理论上通用,升级Win10成板砖也可以用这个恢复)
查看>>
Anroid搭建一个局域网Web服务器
查看>>
kettle删除资源库中的转换或者作业
查看>>
java的重写规则
查看>>
Java Spring MVC项目搭建(一)——Spring MVC框架集成
查看>>
Base64编码原理与应用
查看>>
物联网产业链八大环节全景图
查看>>