两个类似的重载?或一个超负荷呼叫另一个?

时间:2015-07-05 10:02:04

标签: c# c#-4.0 overloading

我有一个函数,我想重载以不同的形式获取相同的数据,即:

void encode(byte[,,],float)

void encode(Bitmap[],float)

我写了一个函数的重载,它很长(大约60行)。

我的问题是,在编写第二个重载时,我应该复制第一个重载的大部分代码并进行少量更改,还是应该转换数据并调用第一个重载?

2 个答案:

答案 0 :(得分:1)

永远不要将代码从方法复制到另一个方法,这是一个很大的错误。对于重载,您应该使用大多数参数创建一个方法,而对于其他重载,则调用具有大多数参数且具有一些默认值的方法。

答案 1 :(得分:0)

如果可能的话,避免大量重复。

如你所说,一个过载调用另一个过载通常是一个很好的方法。

通常可以很好地将共性分解为两个重载调用的私有方法。如果需要,此私有方法可以是通用的,以允许对不同类型的类似操作。

有时候重复是不可避免的,特别是在原始类型上重载时。即使在这里,看看你是否可以分解至少一些功能,或考虑T4模板。