首页 > 其他 > 详细

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

时间:2016-08-19 09:56:10      阅读:213      评论:0      收藏:0      [点我收藏+]

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





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

原文:http://www.cnblogs.com/jgig11/p/5786324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!