两个类似的重载?或者一个过载调用另一个
本文关键字:一个 调用 另一个 或者 重载 两个 | 更新日期: 2023-09-27 18:01:15
我有一个函数,我想重载它以不同的形式获取相同的数据,即:
void encode(byte[,,],float)
和
void encode(Bitmap[],float)
我已经写了一个函数的重载,它很长(大约60行)。
我的问题是,当编写第二个重载时,我应该复制第一个重载的大部分代码并做一点改变,还是应该转换数据并调用第一个重载?
永远不要将代码从一个方法复制到另一个方法,这是一个很大的错误。对于重载,你应该创建一个包含最多参数的方法,对于其他重载,调用包含最多参数的方法,并使用一些默认值。
尽可能避免大量重复。
一个重载调用另一个重载,正如你所建议的,通常是一个好方法。
通常也可以很好地将共性分解为两个重载调用的私有方法。如果有必要,这个私有方法可以是泛型的,以允许对不同类型进行类似的操作。
有时重复是不可避免的,特别是在基本类型上重载时。即使在这里,看看您是否可以提出至少一些功能,或者考虑T4模板。