当面对具有多个类似方法的类在不同的参数类型上运行时,您是否在方法名称中包含某种参数描述,或者您是否保持名称相同并相信参数本身提供的足够信息?对比下面给出的两个例子:
interface Option1 {
update(ObjectA);
update(ObjectB);
update(List<Object>);
}
interface Option2 {
updateA(ObjectA);
updateB(ObjectB);
updateAll(List<Object>);
}
我听到了以下论点:
答案 0 :(得分:1)
这取决于。存在方法重载是因为它很有用。但是,它也会让你感到悲伤。
如果您正在考虑超载,请考虑:
例如:
String.indexOf()
已超载。所有的重载都有相同的意图。将没有额外的indexOf()方法混合到叶类中。 set()
- 所有上述问题都可以回答“是”。 答案 1 :(得分:0)
对于支持方法重载的静态类型语言,选项1。
用于处理对象层次结构,选项1。
对于所有其他情况,我建议选项2。
我的2美分。 :)