在C#中删除重复代码的最佳方法

时间:2016-04-13 14:21:32

标签: c# refactoring

简化类的最佳方法是什么,它包含两个完成类似工作的方法。

enum State 
{
    Processing, Stoped
}

public static void CheckState(State state, Element elem)
{
    if (elem.State == state)
        //some work
}

public static void CheckValue(int value, Element elem)
{
        if (elem.Value == value)
            //some work
}

因此,Element类的对象有两个不同类型的字段。删除重复代码的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以为条件传递函数。传递元素,因为我假设您需要它进行处理。

8080

用法:

public static void CheckAndProcess(Func<bool> CheckCondition, Element elem)
{
     if (CheckCondition())
     {
        //some work
     }
}

答案 1 :(得分:0)

您也可以在没有匿名功能的情况下执行此操作:

public static void CheckElement(Element element, State state = null, int? value = null)
{
    if ((state != null && element.State == state) || (value != null && element.Value == value.Value))
    {
        //some work
    }
}

用法:

//for state
CheckElement(element, myState);
//or
//for value
CheckElement(element, value: myValue);