【发布时间】:2012-07-16 06:52:34
【问题描述】:
我想知道使用省略号表示可选参数是否是个好主意?
public void update(Object object, boolean... checkFirst)
{
if (checkFirst[0])
{
...
} //if
} //update
我使用的代码连接到没有主键的数据库表以允许多次插入(遗留代码,因此请原谅此处的任何不良做法想法)。因此,与其使用两种方法(重载),我想我可以使用省略号来达到相同的效果。但你认为这是一种糟糕的做法吗?
干杯,
阿列克谢蓝。
【问题讨论】:
-
在我看来,这并不是一个糟糕的做法。是的,它允许您发送 27 个布尔值而不是一个。我不认为这是一个大问题。但是,重载签名的成本并不足以证明这一点。
-
我认为这是一种糟糕的做法——如果你有第二个(可选)标志,它需要一个参数名称和文档。方法签名中省略号的存在意味着可以使用该函数将无限数量的有意义的值传递给开发人员。