c# - 通过传递方法或其他方法删除重复代码?

标签 c# .net oop

我有两个完全一样的方法,只是在一条线上 想象一下:

    public void ApplyHorizontalScale(int x, int Y)
    {
        // Code 1
        forecast.Formula = Method1(X, Y);
        // Code 2
    }


    public void ApplyVerticalScale(int x, int Y)
    {
        // Code 1
        forecast.Formula = Method2("Foo");
        // Code 2
    }


    int Method1(int x , int y)
    {
        return x+y;
    }

    int Method2(string s)
    {
        return Foo.Length;
    }

问题是Code 1和Code 2重复了两次! 我怎么能有这样的东西:

public void ApplyScale(int x, int Y, WhichMethod)
{
        // Code 1
        forecast.Formula = WhichMethod();
        // Code 2
}

请注意,Method1 和 Method2 具有不同的签名,并且其中一个正在访问私有(private)成员。

最佳答案

ApplyVerticalScale 和 ApplyHorizo​​ntalScale 是非常好的方法 - 您不需要将它们组合成一个“神” ApplyScale 公共(public)方法。

您应该重构该方法的内部结构,以调用一次包含 Code1 和 Code2 的私有(private) ApplyScale(或类似)方法,每个方法传递在特定方向应用缩放所需的任何内容。

关于c# - 通过传递方法或其他方法删除重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415049/

相关文章:

c# - 使用自定义属性装饰方法

javascript - 配置属性遮蔽

java - 包含的对象在何处创建才能被视为组合或聚合,这重要吗?

c# - 如何从 silverlight 文件夹中打开文件

c# - MonoTouch.Dialog RootElement 的自定义标题

XML 的 C# LINQ 左外连接无法正常工作

c# - 将属性属性设置为装饰类的类型

c# - 如何在 C# 中获取完整的主机名?

.net - 解决 MSBuild 4.0 警告

java - Java 国际象棋——面向对象与效率