如果为方法添加第三个签名,是否会让第二个和第三个变体直接调用第一个(实现的变体),或者第三个调用是第二个,第二个调用第一个。
在我看来,额外的方法调用将是您没有的开销,所以您希望所有方法直接调用实现的方法。
我想知道是否有人知道这样做的任何“标准推荐方式”,或者它是更个人偏好还是取决于背景。当我向现有的重载方法添加新签名时,我总是想知道它。你几乎总是可以选择采用哪种方式。
Pathetically Stupid示例:
现有方法:
public String concatenate(String one, String two, String three) {
return(one+two+three);
}
public String concatenate(String one, String two) {
return(concatenate(one, two, ""));
}
要添加下一个,我该做:
public String concatenate(String one) {
return(concatenate(one,"",""));
}
OR
public String concatenate(String one) {
return(concatenate(one,""));
}
是的,我知道最后的方法基本上是无操作。
答案 0 :(得分:2)
我希望在可能的情况下创建一个其他所有上传程序调用的私有方法。
private String _concatenateBase(String one, String two)
{
return one + two;
}
public String concatenate(String one, String two, String three)
{
return _concatenateBase(one+two, three);
}
答案 1 :(得分:1)
我会通常使用更少的参数调用重载来调用带有更多参数的重载,填充默认值。我怀疑我通常会尽量避免重复默认值,因此我会将第三个变体调用为第二个,这将调用第一个。但是,这绝对取决于具体情况。在某些情况下,性能将是一个重要因素,尽管通常可读性更为重要。在大多数情况下,我怀疑非常在可读性方面存在很大差异,特别是如果默认值很简单。
当然,在某些情况下,重载不是以这种线性方式构造的:可能存在多个重载,它们都称为相同的“核心”重载,但如果它们提供不同的参数则不能相互调用