前言

上两篇我们讲到了提炼函数(Extract Method)和内联函数(Inline Method)两种重构手法, 接下来我们继续讲解跟重新组织函数相关的重构手法.

内联临时变量(Inline Temp)

这个重构手法和内联函数的意思差不多, 不过融合的对象变成了临时变量. 下面是一个例子:

double basePrice = anOrder.basePrice();
return (basePrice > 1000);
//上面这个basePrice就是一个临时变量,可以替换:
return (anOrder.basePrice() > 1000);

使用场景:

  1. Inline Temp一般不会单独使用, 多半是作为Replace Temp With Query的一部分使用.
  2. 如果临时变量妨碍了其他重构手法, 那么应该使用它.

以查询取代临时变量(Replace Temp With Query)

这个手法一般是运用Extract Method时必用的提炼手法, 因为某个函数内的临时变量只能被该函数使用, 类中的其他函数共享不到这个临时变量, 会导致其他函数会在自己内部写同样的逻辑, 代码也越来越长. 下面用一个实例说明:

double basePrice = _quantity * _itemPrice;
if(basePrice > 1000){
  return basePrice * 0.95;
}else{
  return basePrice * 0.98;
}
//我们可以看出basePrice只能被当前函数使用, 该类中的其他函数还要写同样逻辑
//于是我们把表达式提炼成一个单独函数, 供该类所有函数共享
double basePrice(){
  return _quantity * _itemPrice;
}

if(basePrice() > 1000){
  return basePrice() * 0.95;
}else{
  return basePrice() * 0.98;
}

总结

今天我们介绍了两个关于函数的重构方法:Inline Temp和Replace Temp With Query. Inline Temp比较简单, 一般是和Replace Temp With Query一起用. 而Replace Temp With Query这个手法一般在Extract Method时会大量使用, 也是我们要重点掌握的.

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增