专栏首页哲学驱动设计重构:一个简单的IF语句

重构:一个简单的IF语句

private static void OldMethod(BusinessObjectInfo parentBOInfo)
{
    IList<BusinessObjectsPropertyInfo> bosPropertyInfo = parentBOInfo.BOsPropertyInfos;
    if ((bosPropertyInfo.Count == 1) && (null != parentBOInfo.TreeChildPropertyInfo))
    {
        //action one
    }
    else if (((bosPropertyInfo.Count > 1) && (null != parentBOInfo.TreeChildPropertyInfo))
        || ((bosPropertyInfo.Count > 0) && (null == parentBOInfo.TreeChildPropertyInfo)))
    {
        //action two
    }
}
private static void NewMethod(BusinessObjectInfo parentBOInfo)
{
    IList<BusinessObjectsPropertyInfo> childrenProperties = parentBOInfo.BOsPropertyInfos;

    var childrenPropertiesCount = childrenProperties.Count;
    if (childrenPropertiesCount <= 0)
    {
        return;
    }

    var hasTreeChild = null != parentBOInfo.TreeChildPropertyInfo;

    if (hasTreeChild)
    {
        if (childrenPropertiesCount == 1)
        {
            //action one
        }
    }
    else
    {
        //action two
    }
}

    以上两种写法并不完全等价(你能找出来吗?),不过就当时的业务逻辑来说,这样写是没错的。

   上面的写法,还是错了,应该是这样:

private static void NewMethod2(BusinessObjectInfo parentBOInfo)
{
    IList<BusinessObjectsPropertyInfo> childrenProperties = parentBOInfo.BOsPropertyInfos;

    var childrenPropertiesCount = childrenProperties.Count;
    if (childrenPropertiesCount <= 0)
    {
        return;
    }

    var hasTreeChild = null != parentBOInfo.TreeChildPropertyInfo;

    if (hasTreeChild && childrenPropertiesCount == 1)
    {
        //action one
    }
    else
    {
        //action two
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 搭建 WPF 上的 UI 自动化测试框架

    简要说明 OEA 1.0-2.0 框架中,界面都是以 WPF 技术作为基础平台开发的。我们需要对开发出来的系统进行自动化测试,而 .NET 平台的自动化测试平...

    用户1172223
  • C# async/await 使用总结

    今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理。 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经...

    用户1172223
  • 30天敏捷结果(10) - 强化你的一周

       “Life is not measured by the number of breaths we take, but by the moments th...

    用户1172223
  • JSP页面的注释细节

    本文链接:https://blog.csdn.net/u014427391/article/details/100020721

    用户1208223
  • Servlet3.0新特性(从注解配置到websocket编程)

         Servlet3.0的出现是servlet史上最大的变革,其中的许多新特性大大的简化了web应用的开发,为广大劳苦的程序员减轻了压力,提高了web开发...

    Single
  • Cisco路由器之IPSec 虚拟专用网(内附配置案例)

    一、虚拟专用网的定义 虚拟专用网就是在两个网络实体之间建立的一种受保护的连接,这两个实体可以通过点到点的链路直接相连,但通常情况下他们会相隔较远的距离。

    小手冰凉
  • 通过招聘要求看数据分析师岗位

    想学习数据分析,但不知道从哪里下手,那么直接看看公司招人的条件,总结一下,你就知道学习什么了。基于此,小编爬取了拉勾网上面关于数据分析的招聘信息,并存储到MyS...

    张俊红
  • 【java项目实战】Servlet详解以及Servlet编写登陆页面(二)

    http://blog.csdn.net/jiuqiyuliang/article/details/36424981

    bear_fish
  • 移动开发流水线建立以及自动化测试

    工业时代流水线的发明将生产任务的效率大大提升。同样,在软件开发过程中流水线的建立也能帮助我们更好的产出、提升效率。

    100000798482
  • 程序员获得高薪有哪些谈判技巧

    程序员获得高薪有哪些谈判技巧 问题 我在工作几年后失业了,我并不担心找不到工作,因为目前工程师市场处于旺季,不过我已经好久没面试了,我无法确保我的谈判技巧如...

    用户1289394

扫码关注云+社区

领取腾讯云代金券