“重构-改善既有代码的设计”笔记

一、重构原则
1.函数应该放在它所使用的数据的所属对象内
2.重构新函数,有时候可以适当保留旧函数,让它去调用新函数,如果旧函数是一个public 函数 ,而我又不想修改其他类的接口,这是一个有用的手法
3.尽量少使用临时变量

二、如何重构
2.1 Duplicated Code (重复代码)

2.1.1
最为单纯的重复代码“同一个类的两个函数含有相同的表达式”,采用Extract Method 提炼出重复的代码
2.1.2
“两个互为兄弟的子类内含有相同的表达式”,对两个类都使用Extract Method ,然后对提炼出来的代码使用 Pull up将它推入超类
2.1.3
如果代码之间只是相似,并非完全相同,那么就Extract Method 将相似的部分和差异的部分割开,构成单独一个函数,然后运用 From Template Method 获得一个Template Method 设计模式。如果有些函数以不同的算法做相同的事,你可以选择其中比较清晰的一个,并使用Substitute Algorithm(替换算法) 将其他函数的算法替代掉。
2.1.4
如果两个毫不相干的类出现 Duplicated Code ,你应该考虑对其中一个类使用Extract Class ,将重复代码提炼到一个独立类中,然后在另一个类内使用新类

2.2 Long Method (过长函数)
百分之九十九的场合里,只需使用Extract Method 。
2.2.1
如何确定该提炼哪一段代码呢?一个很好的技巧:寻找注释。他们通常能指出代码的用途和实现手法之间的语义距离。如果代码前方一行注释,就是在提醒你,可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。
2.2.2
条件表达式额循环常常也是提炼的信号,你可以使用 Decompose Conditional 处理条件表达式。至于循环和其内的代码提炼到一个独立函数中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值