【问题标题】:Java Method Overloading Best PracticeJava 方法重载最佳实践
【发布时间】:2018-06-20 07:08:11
【问题描述】:

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

案例一

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;
}

【问题讨论】:

  • 为什么一个与另一个不同?但这只是一种情况:如果只有一个参数的方法需要对另一个不需要的部门进行验证怎么办?有时可以这样做。其他时候不是。特别是如果它只用于替换一行代码:有什么用?
  • 您也可以让第一个方法调用第二个方法(使用position 的一些默认值),而第二个方法同时分配两个值。

标签: java methods overloading


【解决方案1】:

避免代码重复。

从这个角度来看,选项 2 稍微好一些,因为它可以防止重复分配。通常,您使用构造函数来执行此操作,然后将其称为构造函数伸缩。要在这里实现真正的伸缩,您应该遵循 Berger 的建议,而不是将单参数方法称为双参数方法。这向读者传达了部门实际导致的设置只是

除此之外:我在这里看到的真正问题是命名。 transfer() 暗示有东西被转移了。实际上,您的方法只不过是一个setter。它应该相应地命名,例如setTransferDetails()

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2010-11-14
    • 2020-02-28
    • 2012-10-09
    相关资源
    最近更新 更多