6.2 Inline Method(内联函数)

概括
一个函数的内部代码与名称同样清晰易懂。
在函数调用点插入函数本体,然后移除该函数。
    例子
int getRating(){
     return (moreThanFiveLateDeliveries())  ?  2  :  1;
}
boolean moreThanFiveLateDeliveries(){
     return _numberOfLateDeliveries  >  5;
}

           重构之后
int getRating(){
     return (_numberOfLateDeliveries  >  5?  2  :  1;
}

动机
  1. 函数名和函数内部代码同样清晰可读
  2. 一群组织不甚合理的函数:将它们都内联到一个大型函数中,再从中提炼出组织合理的小型函数(实施Replace Method with Method Object之前先这么做,往往可以获得不错的效果)
  3. 如果使用了太多间接层,使得系统中所有函数都似乎只是对另一个函数的简单委托。
    (间接层是有价值的,但不是所有的间接层都有价值。试着使用内联手法,可以找出那些有用的间接层,同时将那些无用的间接层去除)
做法
  1. 检查函数,确定它不具备多态性
    (如果子类重写了这个函数,就不要将此函数内联)
  2. 找出这个函数所有被调用的地方
  3. 将这个函数的所有被调用处都替换为函数本体
  4. 编译,测试
  5. 删除该函数定义
实践
Inline Method并不简单。
递归调用,多返回点,内联至另一个对象中而该对象并无提供访问函数 这些情况很复杂
如果遇到了这样的复杂情况,那么就不应该用这个重构方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值