Java方法重载最佳实践

lne*_*man 1 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;
}
Run Code Online (Sandbox Code Playgroud)

案例2

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

public void transfer(Department department,String postion){
    transfer(department);
    this.postion = position;
}
Run Code Online (Sandbox Code Playgroud)

Gho*_*ica 7

您可以避免代码重复.

从这个角度来看,选项2略好一些,因为它可以防止重复该任务.通常,您使用构造函数执行此操作,然后将其称为构造函数telescoping.要在这里进行真正的伸缩,你应该遵循Berger的建议,而是让一个参数方法调用双参数方法.这传达什么设置读者只是部实际上导致.

除此之外:我在这里看到的真正问题是命名.transfer()意味着某些东西被转移了.实际上,你的方法只不过是一个二传手.它应该相应地命名,就像setTransferDetails().