重构第30天 尽快返回 (Return ASAP)

重构第30天 尽快返回 (Return ASAP)

理解:把条件语句中复杂的判断用尽快返回来简化。

详解如首先声明的是前面讲的”分解复杂判断“,简单的来说,当你的代码中有很深的嵌套条件时,花括号就会在代码中形成一个长长的箭头。我们经常在不同的代码中看到这种情况,并且这种情况也会扰乱代码的可读性。下代码所示,HasAccess方法里面包含一些嵌套条件,如果再加一些条件或者增加复杂度,那么代码就很可能出现几个问题:1,可读性差 2,很容易出现异常 3,性能较差

 

 1 public class Order
 2     {
 3         public Customer Customer { get; private set; }
 4 
 5         public decimal CalculateOrder(Customer customer, IEnumerable<Product> products, decimal discounts)
 6         {
 7             Customer = customer;
 8             decimal orderTotal = 0m;
 9 
10             if (products.Count() > 0)
11             {
12                 orderTotal = products.Sum(p => p.Price);
13                 if (discounts > 0)
14                 {
15                     orderTotal -= discounts;
16                 }
17             }
18 
19             return orderTotal;
20         }
21     }

那么重构上面的代码也很简单,如果有可能的话,尽量将条件判断从方法中移除,我们让代码在做处理任务之前先检查条件,如果条件不满足就尽快返回,不继续执行。下面是重构后的代码:

 1  public class Order
 2     {
 3         public Customer Customer { get; private set; }
 4 
 5         public decimal CalculateOrder(Customer customer, IEnumerable<Product> products, decimal discounts)
 6         {
 7             if (products.Count() == 0)
 8                 return 0;
 9 
10             Customer = customer;
11             decimal orderTotal = products.Sum(p => p.Price);
12 
13             if (discounts == 0)
14                 return orderTotal;
15 
16             orderTotal -= discounts;
17 
18             return orderTotal;
19         }
20     }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109076.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 设置SVN忽略文件和文件夹(文件夹)

    设置SVN忽略文件和文件夹(文件夹)

    2021年12月14日
    53
  • 列一些Hbase面试题「建议收藏」

    列一些Hbase面试题「建议收藏」HbaseHbase是怎么写数据的?HDFS和HBase各自使用场景Hbase的存储结构热点现象(数据倾斜)怎么产生的,以及解决方法有哪些HBase的rowkey设计原则…

    2022年5月31日
    22
  • CMS-项目的技术架构

    CMS-项目的技术架构2项目的技术架构2.1技术架构学成在线采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:业务流程举例:用户可以通过pc、手机等客户端访问系统进行在线学习。系统应用CDN技术,对一些图片、CSS、视频等资源从CDN调度访问。所有的请求全部经过负载均衡器。对于PC、H5等客户端请求,…

    2022年6月4日
    44
  • 两个节点的最近公共祖先_今日排列三21253

    两个节点的最近公共祖先_今日排列三21253原题链接题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。输出格式输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。输入

    2022年8月9日
    0
  • omnidisksweeper怎么用_handbrake参数设置

    omnidisksweeper怎么用_handbrake参数设置http://newping.cn/322

    2022年10月22日
    0
  • 查看并设置mysql隔离级别

    查看并设置mysql隔离级别1、查看当前会话的隔离级别:select@@tx_isolation;2、查看系统的隔离级别:select@@global.tx_isolation;3、设置会话的隔离级别,隔离级别由低到高设置依次为:setsessiontransactonisolationlevelreaduncommitted;setsessiontransactoni…

    2022年6月16日
    96

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号