重构if语句

时间:2013-12-23 09:33:17

标签: c# refactoring

重构“if”语句的最佳方法是什么?

我的方法片段:

if (code == SystemCode.Enum1.ToString())
{
    user.IsEnum1 = result != null;
}

if (code  == SystemCode.Enum2.ToString())
{
    user.IsEnum2 = result != null;
}

if (code  == SystemCode.Enum3.ToString())
{
    user.IsEnum3 = result != null;
}

3 个答案:

答案 0 :(得分:0)

我会尝试这种方法:

enum MyEnum
{
    Enum1, 
    Enum2, 
    Enum3
}

class User
{
    Dictionary<MyEnum, bool> enumList;

    public void InitEnumList()
    {
        enumList = new Dictionary<MyEnum, bool>();
        foreach (var item in Enum.GetValues(typeof(MyEnum)))
        {
            //Set the default key-value pairs
            enumList.Add((MyEnum)item, false);
        }
    }
}

答案 1 :(得分:0)

Switch语句是避免多个if语句的好方法之一

答案 2 :(得分:0)

试试这个:

if ((  !(code != ((int)SystemCode.Enum1).ToString() || (user.IsEnum1 = result != null).ToString().Length > 0))
    || !(code != ((int)SystemCode.Enum2).ToString() || (user.IsEnum2 = result != null).ToString().Length > 0)
    || !(code != ((int)SystemCode.Enum3).ToString() || (user.IsEnum3 = result != null).ToString().Length > 0))
    {
        return;
    }

我知道它看起来很复杂但不是你想要的。如果您有任何疑问,请与我们联系。