博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类方法代码重构-寻找坏味道
阅读量:7022 次
发布时间:2019-06-28

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

查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!

    

代码重构-寻觅坏道味

本文参考了一下书籍:

《重构-善改既有代码的计划》

《重构手册》

 

1. 重复的代码

    

    

a) 封装成类,应用组合方法。

    

b) 封装成方法,通常是在统一类中。

    

c) 数参少的方法用调数参多的代码,并予赋默认值。

    

d) 提取大众基类,把同共的代码放到父类。

    

    

2. 长过

    

    

a) 方法

    

    

    

    

i. 提取子方法。

    

    

    

ii. 动移这个方法动作外的函数到表面。

    

    

    

    

b) 类

    

    

    

    

i. 提取类(一同化变的,逻辑上有依附的量变封装在一同)

    

    

    

ii. 虑考move method来搬移不属于该类的方法。

    

    

    

    

c) 数参列

    

    

    

    

i. 封装成一个代表数参的象对。

    

    

    

ii. 传递这个数参象对取代长过的数参序列。

    

    

    

3. 名不达意

    

    

a) 类名

    

    

    

    

i. Rename 类名。

    

    

    

ii. 封装提取其他类。

    

    

    

iii. Move method

    

    

    

    

b) 方法名

    

    

    

    

i. Rename method name

    

    

    

ii. 封装提取方法。

    

    

    

iii. 搬移方法。

    

    

    

    

c) 量变名

    

    

    

    

i. Rename 

    

    

    

4. 多过的Null检查

    

    每日一道理
这浓浓的母爱使我深深地认识到:即使你是一只矫健的雄鹰,也永远飞不出母爱的长空;即使你是一条扬帆行驶的快船,也永远驶不出母爱的长河!在人生的路上不管我们已走多过远,还要走多远,我们都要经过母亲精心营造的那座桥!

    

a) 应用Null Object模式。

    

    

5. 多重责职

    

    

a) 类

    

    

    

    

i. 拆分类

    

    

    

    

b) 方法

    

    

    

    

i. 拆分方法

    

    

    

    

c) 接口

    

    

    

    

i. 拆分接口

    

    

    

    

d) 量变

    

    

6. 释注

    

    

a) 提取封装方法

    

b) 给方法供提一个表意的名字。

    

c) 给触及到得量变供提一个表意的名字。

    

    

7. 方法中颗粒失衡

    

    

a) 方法中有很粗的方法用调,又有很细粒度的细节操纵。

    

b) 应当为细粒度的细节操纵封装成方法,以供用调。

    

    8. 不一致的化变:某个类因为不同的原因在不同的方向上发生化变。

    

    

a) 拆分类。

    

    

9. 散弹式修改:一个化变,多处修改。

    

    

a) 把同相依附的化变,封装到一个类里。

    

    

10. 恋依情结:函数对某个类的趣兴高过于其本身。

    

    

a) 搬移方法。

    

    

11. 庞杂的逻辑运算表达式

    

    

a) 提取方法。

    

b) 给一个适合的名字。

    

    

12. 数据泥团:多处函数引用类似的数参序列

    

    

a) 可以把相干数参提取封装类。

    

    

13. 暴漏多过的细节

    

    

a) 一个类中多过的public方法。

    

b) 在一个类里多过的操纵了另一个类。(应当把给另一个类建创一个方法,以供后面的类用调。)

    

    

14. 类子并非父类的一种况情:质本不同或类子不想具有父类的实现

    

    

a) 类子发生了变畸。

    

b) 应当应用组合的方法。

    

    

15. 逻辑与UI操纵混搭。

    

    

a) 把逻辑运算和UI操纵离分。

    

    

16. 基本类型偏执:类中有很多系关密紧的基本类型成员量变

    

    

a) 提取内部类。

    

    

17. 庞杂的switch 表达式。

    

    

a) 应用策略模式,状态模式善改。

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。

硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

转载地址:http://ycbxl.baihongyu.com/

你可能感兴趣的文章
SVG.js Mask覆盖和ClipPath裁剪
查看>>
Python多线程之线程创建和终止
查看>>
通过JS语句判断WEB网站的访问端是电脑还是手机
查看>>
(8) iphone 开发 数据传递 : 02 页面切换与数据的反向传递
查看>>
LPC3250 External Memory Controller
查看>>
MySQL内存表的弊端
查看>>
使用SIMILE Timeline 将邮件“事件”可视化
查看>>
SQL:创建某一时间段内的周末日期表以及特殊处理日期表
查看>>
什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?(转)
查看>>
LindAgile.SchedulingTask~设计一个不错的任务调度组件
查看>>
恶搞之手机垃圾信息发送器 手机短信骚扰器
查看>>
mysql replication之binlog-do-db、binlog-ignore-db
查看>>
Date类型和Long类型的相互转换
查看>>
XMPP协议
查看>>
CSS:给 input 中 type="text" 设置CSS样式
查看>>
Softmax函数
查看>>
hdu4462 Scaring the Birds
查看>>
设计中的道理_6
查看>>
MFC——AfxParseURL用法
查看>>
关于综合布线系统线缆挑选方法
查看>>