c# - 当返回类型不同时,我可以避免代码重复吗?

标签 c# code-duplication

我有两种逻辑完全相同的方法:

Dog RunDog()
{
    // a LOT of businees logic
    return DogMethod(dogParams);
}

Employee RunEmployee()
{
    // the exact same logic from above
    return EmployeeMethod(employeeParams (can be easily converted to/from dogParams));
}

是否有通用的设计模式来帮助我避免代码重复?

也许是这样的:

T RunT()
{
    // Logic...
    // Invoke DogMethod/EmployeeMethod depending on T and construct the params accodringly
}

我选择 Dog/Employee 是为了强调没有简单的方法可以在两者之间进行转换。

最佳答案

如果这两个方法返回不同的类型,那么尽管它们在内部使用相同的业务逻辑,但它们会做不同的事情。所以我会提取常用的业务逻辑,比如

class Running
{
    public Dog RunDog()
    {
        var dogParams = GetParams();
        return DogMethod(dogParams);
    }

    public Employee RunEmployee()
    {
        var dogParams = GetParams();
        var employeeParams = ConvertParams(dogParams);
        return EmployeeMethod(employeeParams);
    }

    private DogParams GetParams()
    {
          // a LOT of business logic
    }
}

关于c# - 当返回类型不同时,我可以避免代码重复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39447493/

相关文章:

c# - 存储过程错误 "argument 1 for routine ... is not a variable or NEW pseudo-variable in BEFORE trigger"

c# - 将 key 发送到 C#/.NET 中的非事件应用程序

c++ - 如何删除这个简单代码中的重复项?

.net - 为什么我在 Reflector 的 Linq 中看到如此多的代码重复?

c# - 阻止 asp :Button OnClick event in C# from the OnClientClick event in JavaScript?

c# - Entity Framework - 将表的列名作为字符串数组

java - 我如何创建一个由 3 个已经存在的类似子类组成的 super 抽象类,其构造函数中具有不同数量的参数

language-agnostic - 干还是不干?关于避免代码重复和保持内聚

javascript - Web 应用程序中避免代码重复的策略

c# - 在 WPF Windows Phone 8 中销毁上一页 (NavigationService.GoBack())