前言

上两篇我们讲到了提炼函数(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秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

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

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

2024年10月

新增

新增

新增

新增

新增

新增

新增

新增

新增

新增