[英]Method overloads and code duplication promotion
重载方法往往会鼓励在方法组的所有方法之间复制代码的习惯。 例如,我可以在一个方法中连接一个字符串,将其写入文件等,但是在另一个方法中执行相同操作但添加了一个附加参数(创建重载)。
方法本身可以放在一个基类中,这将使具体类看起来更干净,但基类将遇到问题( 解决问题)。 params关键字似乎是一个解决方案,但我可以想象,如果我真的认为这个想法(使用参数而不是单个参数),那么还会出现某种其他问题。
因此,我是唯一一个认为重载会促进代码重复的人吗?
谢谢
通常我在具有最多参数的重载中具有实际实现,并且让其他重载调用这个未传递的参数的默认值。
我当然不会复制跨越不同重载写入文件的代码 - 实际上,单独的代码可能会被重构为其自己的正确参数化私有方法。
除了上面的选项之外,新版c#即将推出的默认参数功能,基本上只是Winston建议的合成糖。
public string WriteToFile(string file, bool overWrite = false){
}
一个或多或少消除这个问题的常见模式是有一个基本实现,并让每个重载调用基本实现,如下所示:
string WriteToFile(string fileName, bool overwrite) {
// implementation
}
string WriteToFile(string fileName) {
WriteToFile(fileName, false);
}
这样只有一个实现。
如果所有重载都使用相同的代码,它们只是略微不同地处理它,也许你应该创建每个重载调用的另一个函数,或者如果其中一个是基础泛型版本,那么每个其他重载应该调用通用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.