java重构学习3:以查询代替临时变量(Replace Temp with Query)

本系列来自《java 重构改善既有代码的设计》一书

如:将一个临时变量temp保存到某一个表达式的运行结果。

做法将这个表达式提炼到一个独立函数(所谓查询式:Query),将这个临时变量的所有替换为新函数的调用。新函数可以被其它地方引用。

public double getPrice(){
	double basePrice = itemPrice * quantity;
	if(basePrice > 1000) {
		return basePrice * 0.95;
	} else {
		return basePrice * 0.98;
	}
}
可以写成:

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

public double basePrice() {
	return itemPrice * quantity;
}
考虑到临时变量只是暂时的,而且只能在所属函数内部使用,由于临时变量只有在所属函数内部使用,所以会驱使你写出更长的函数,因为只有这样你才能访问到要访问的临时变量。而如果把临时变量替换成为一个查询式(query method),那么同一个类的所有函数都能获取这份信息。

以查询替换临时变量往往是提炼方法(Extract Method)前必不可少的步骤,因为局部变量会让代码难以提炼,所以应该尽可能把他们替换成查询式。

做法:

1、找出只被赋值一次的临时变量(如果某个变量被赋值超过一

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值