Java方法重载最佳实践

Java方法重载最佳实践,java,methods,overloading,Java,Methods,Overloading,只是想知道在创建具有相同签名的方法时的最佳实践是什么 案例1 public void transfer(Department department){ this.department = department; } public void transfer(Department department,String postion){ this.department = department; this.postion = position; } 案例2 public

只是想知道在创建具有相同签名的方法时的最佳实践是什么

案例1

public void transfer(Department department){
    this.department = department;
}

public void transfer(Department department,String postion){
    this.department = department;
    this.postion = position;
}
案例2

public void transfer(Department department){
    this.department = department;
}

public void transfer(Department department,String postion){
    transfer(department);
    this.postion = position;
}

您可以避免代码重复

从这个角度来看,选择2稍微好一点,因为它可以防止该任务的重复。通常,您使用构造函数来实现这一点,然后将其称为构造函数伸缩。要实现真正的伸缩,您应该遵循Berger的建议,让单参数方法调用双参数方法。这也向读者传达了该部门的实际情况


除此之外:我在这里看到的真正问题是命名
transfer()
表示某些内容被传输。实际上,您的方法只不过是一个设置者。它应该相应地命名,比如
setTransferDetails()

为什么一个不同于另一个?但这只是一种情况:如果只有一个参数的方法需要对部门进行验证,而另一个则不需要,该怎么办?有时候这样做是可能的。其他时候并非如此。特别是当它只用于替换一行代码时:有什么用?您还可以让第一个方法调用第二个方法(为
位置
指定一些默认值),第二个方法同时指定这两个值。