提炼变量&内联变量

提炼变量:如下所示:
1.反向重构:内联变量。

2.动机:面对一块复杂逻辑时,局部变量能给其中一部分命名,这样就可以更好地理解这部分逻辑要干什么。

3.做法:如下所示:
1>.确认要提炼的表达式没有副作用。
2>.声明一个不可以修改的变量,把你想要提炼的表达式复制一份,以该表达式的结果值给这个变量赋值。
3>.用这个新变量取代原来的表达式。
4>.测试。

4.范例:如下所示:
1>.源代码如下所示:

function price(order)  {
	// price is base price - quantity discount + shipping
	return order.quantity * order.itemPrice - 
	Math.max(0, order.quantity - 500) * order.itemPrice * 0.05 +
	Math.min(order.quantity * order.itemPrice * 0.1, 100);
}

2>.重构代码如下所示:

function price(order)  {
	const basePrice = order.quantity * order.itemPrice;
	const quantityDiscount = Math.max(0, order.quantity - 500) * order.itemPrice * 0.05;
	const shipping = Math.min(basePrice * 0.1, 100);
	return basePrice - quantityDiscount + shipping;
}

内联变量:如下所示:
1.反向重构:提炼变量。

2.动机:当变量并不比表达式更具表现力或者变量可能会妨碍重构附近代码时,就要消除该变量。

3.做法:如下所示:
1>.检查确认变量赋值语句的右侧表达式没有副作用。
2>.如果变量没有被声明为不可修改,先将其变成不可修改,并执行测试,从而确保该变量只被赋值一次。
3>.找到第一处使用该变量的地方,将其替换为直接使用赋值语句的右侧表达式。
4>.测试。
5>.重复前面两步,逐一替换其他所有使用该变量的地方。
6>.删除该变量的声明点和赋值语句。
7>.测试。

4.范例:如下所示:
1>.源代码如下所示:

let basePrice = anOrder.basePrice;
return basePrice > 1000;

2.重构代码如下所示:

return anOrder.basePrice > 1000;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值