【问题标题】:In Java is using the ellipsis to represent an optional parameter a good idea?在 Java 中使用省略号来表示可选参数是个好主意吗?
【发布时间】:2012-07-16 06:52:34
【问题描述】:

我想知道使用省略号表示可选参数是否是个好主意?

public void update(Object object, boolean... checkFirst)
{
    if (checkFirst[0])
    {
        ...
    } //if
} //update

我使用的代码连接到没有主键的数据库表以允许多次插入(遗留代码,因此请原谅此处的任何不良做法想法)。因此,与其使用两种方法(重载),我想我可以使用省略号来达到相同的效果。但你认为这是一种糟糕的做法吗?

干杯,

阿列克谢蓝。

【问题讨论】:

  • 在我看来,这并不是一个糟糕的做法。是的,它允许您发送 27 个布尔值而不是一个。我不认为这是一个大问题。但是,重载签名的成本并不足以证明这一点。
  • 我认为这是一种糟糕的做法——如果你有第二个(可选)标志,它需要一个参数名称和文档。方法签名中省略号的存在意味着可以使用该函数将无限数量的有意义的值传递给开发人员。

标签: java ellipsis


【解决方案1】:

省略号的正确术语是varargs。 Varargs 允许开发人员传递可变数量的参数。

使用可变参数提供一个可选参数不是一个好主意。最好使用overloading,如下面的代码示例所示。

public void update(Object object)
{
    update(update, false);
}

public void update(Object object, boolean check)
{
    if (check)
    {
        ...
    } //if
}

这样,开发人员无法传入多个布尔值,但可以不传入任何值。

【讨论】:

  • 是的,可能最好坚持使用重载功能 :) 认为我只是度过了那些日子,哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2020-03-28
  • 1970-01-01
  • 2011-03-09
  • 2011-02-17
  • 2015-12-05
  • 2013-06-14
相关资源
最近更新 更多