博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重构第10天:提取方法(Extract Method)
阅读量:5824 次
发布时间:2019-06-18

本文共 2152 字,大约阅读时间需要 7 分钟。

理解:经常写的代码中,有一些计算逻辑比较复杂的方法,写下来一个很长很长的方法,我们可以把这个方法,根据功能,分解成单独的几个小方法。这样做不仅能够增加代码的可维护性,而且增加了易读性。

详解

重构前代码:

1 public class Receipt 2     { 3         private IList
Discounts { get; set; } 4 private IList
ItemTotals { get; set; } 5 6 public decimal CalculateGrandTotal() 7 { 8 decimal subTotal = 0m; 9 foreach (decimal itemTotal in ItemTotals)10 subTotal += itemTotal;11 12 if (Discounts.Count > 0)13 {14 foreach (decimal discount in Discounts)15 subTotal -= discount;16 }17 18 decimal tax = subTotal * 0.065m;19 20 subTotal += tax;21 22 return subTotal;23 }24 }

我们看到CalculateGrandTotal方法,里面用到了2个foreach循环,看一下,还真不宜理解,不晓得每个foreach主要做什么。

看看重构后的代码:

1 public class Receipt 2     { 3         private IList
Discounts { get; set; } 4 private IList
ItemTotals { get; set; } 5 6 public decimal CalculateGrandTotal() 7 { 8 decimal subTotal = CalculateSubTotal(); 9 10 subTotal = CalculateDiscounts(subTotal);11 12 subTotal = CalculateTax(subTotal);13 14 return subTotal;15 }16 17 private decimal CalculateTax(decimal subTotal)18 {19 decimal tax = subTotal * 0.065m;20 21 subTotal += tax;22 return subTotal;23 }24 25 private decimal CalculateDiscounts(decimal subTotal)26 {27 if (Discounts.Count > 0)28 {29 foreach (decimal discount in Discounts)30 subTotal -= discount;31 }32 return subTotal;33 }34 35 private decimal CalculateSubTotal()36 {37 decimal subTotal = 0m;38 foreach (decimal itemTotal in ItemTotals)39 subTotal += itemTotal;40 return subTotal;41 }42 }

重构后,我们把CalculateGrandTotal方法分解成3个小方法,每个方法名称根据其功能命名。CalculateTax顾名思义,就是计算税收,CalculateDiscounts就是计算折扣金额。

这样就把逻辑剥离的很清楚了。

转载地址:http://qmmbx.baihongyu.com/

你可能感兴趣的文章
chpasswd
查看>>
mysqldump --single-transaction 和--lock-tables参数详解
查看>>
android 数据库_sql语句总结
查看>>
python购物车
查看>>
解决python2和python3的pip冲突
查看>>
面试/编程
查看>>
linux每日命令(16):head命令
查看>>
公司内部分享【富有成效的每日站会】总结
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
iOS横竖屏
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>