zoukankan      html  css  js  c++  java
  • 重构:一个简单的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
        }
    }
  • 相关阅读:
    文艺青年会看这本《迷局》么?
    看文艺青年怎么玩微信客户端
    Sublime Text有哪些使用技巧(转)
    C++ 关键字 explicit, export, mutable
    move语义和右值引用
    C++11 std::function用法
    function adapter(函数适配器)和迭代器适配器
    for_each()的返回值
    C++11的一些新特性
    setw和setfill控制输出间隔
  • 原文地址:https://www.cnblogs.com/zgynhqf/p/1624442.html
Copyright © 2011-2022 走看看