我有一个函数,我想重载以不同的形式获取相同的数据,即:
void encode(byte[,,],float)
和
void encode(Bitmap[],float)
我写了一个函数的重载,它很长(大约60行)。
我的问题是,在编写第二个重载时,我应该复制第一个重载的大部分代码并进行少量更改,还是应该转换数据并调用第一个重载?
答案 0 :(得分:1)
永远不要将代码从方法复制到另一个方法,这是一个很大的错误。对于重载,您应该使用大多数参数创建一个方法,而对于其他重载,则调用具有大多数参数且具有一些默认值的方法。
答案 1 :(得分:0)
如果可能的话,避免大量重复。
如你所说,一个过载调用另一个过载通常是一个很好的方法。
通常可以很好地将共性分解为两个重载调用的私有方法。如果需要,此私有方法可以是通用的,以允许对不同类型的类似操作。
有时候重复是不可避免的,特别是在原始类型上重载时。即使在这里,看看你是否可以分解至少一些功能,或考虑T4模板。