重构10-Extract Method(提取方法)

本文通过一个具体的案例展示了如何使用提取方法重构技术来提高代码的可读性和维护性。原本复杂难懂的CalculateGrandTotal方法被拆分成三个独立的小方法,分别负责计算子总额、折扣和税金。

我们要介绍的重构是提取方法。这个重构极其简单但却大有裨益。首先,将逻辑置于命名良好的方法内有助于提高代码的可读性。当方法的名称可以很好地描述这部分代码的功能时,可以有效地减少其他开发者的研究时间。假设越少,代码中的bug也就越少。重构之前的代码如下:

public class Receipt {
private List<Double> Discounts;
private List<Double> ItemTotals;

public Double CalculateGrandTotal() {
Double subTotal = 0d;
for(Double itemTotal : ItemTotals) subTotal += itemTotal;
if (Discounts.size() > 0) {
for(Double discount : Discounts) subTotal -= discount;
}
Double tax = subTotal * 0.065d;
subTotal += tax;
return subTotal;
}
}
你会发现CalculateGrandTotal方法一共做了3件不同的事情:计算总额、折扣和发票税额。开发者为了搞清楚每个功能如何处理而不得不将代码从头看到尾。相比于此,向下面的代码那样将每个任务分解成单独的方法则要节省更多时间,也更具可读性:
public class Receipt {
private List<Double> Discounts;//getter setter
private List<Double> ItemTotals;//getter setter

public Double CalculateGrandTotal() {
Double subTotal = CalculateSubTotal();
subTotal = CalculateDiscounts(subTotal);
subTotal = CalculateTax(subTotal);
return subTotal;
}
private Double CalculateSubTotal() {
Double subTotal = 0d;
for(Double itemTotal : ItemTotals){
subTotal += itemTotal;
}
return subTotal;
}
private Double CalculateDiscounts(Double subTotal) {
if (Discounts.size() > 0) {
for(Double discount : Discounts){
subTotal -= discount;
}
}
return subTotal;
}
private Double CalculateTax(Double subTotal) {
Double tax = subTotal * 0.065d;
subTotal += tax;
return subTotal;
}
}





转载于:https://www.cnblogs.com/jgig11/p/5786324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值