这是重载方法的不好做法吗?

Boh*_*ohn 20 c#

我有一个这样的方法,它的消费者称之为:

static public void DisplayOrderComments(param1, param2, param3, param4)
Run Code Online (Sandbox Code Playgroud)

现在我为它添加了一个重载:

static public void DisplayOrderComments(param1, param2, param3, param4, param5)
{
    DisplayOrderComments(param1, param2, param3, param4);
    param5.Foo();
}
Run Code Online (Sandbox Code Playgroud)

这是一种不好的做法吗?有更好的方法吗?

Ode*_*ded 28

这绝对没问题 - 它可以保持代码DRY并避免不必要的重复.

这不仅是一种不好的做法,而且是一种很好的做法.


如果您正在使用C#4.0及以上(VS 2010+),你可以使用一个可选的参数为你param5而不是超载,如米奇老鼠中提到了这个答案.


Ali*_*tad 20

好问题.

我会说不,这是正常的重载.但我会这样改变它(总是在具有大多数参数的那个中实现):

static public void DisplayOrderComments(param1, param2, param3, param4)
{
   DisplayOrderComments(param1, param2, param3, param4, null);
}

static public void DisplayOrderComments(param1, param2, param3, param4, param5)
{
  ... // do the work
  if(param5!=null)
     param5.Foo();
}
Run Code Online (Sandbox Code Playgroud)


Mik*_*use 7

是的,我不是说这很糟糕,但是如果你使用的是C#4.0,我建议你选择最后一个参数.

你可以在这里阅读所有关于em的信息 http://msdn.microsoft.com/en-us/library/dd264739.aspx