3

我想知道编写至少需要三个相同类型参数的方法的最佳实践是什么。问题是使用这种方法时可能会混淆参数。例如

method(int userId, int productId, int weight, int price)

我看到的唯一解决方案是使用一些持有者类(可能使用了构建器模式)并将其作为方法参数传递。

4

4 回答 4

5

最佳实践是使用清晰的参数名称(并可能在 Javadoc 中阐明它们)。如果参数太多,单独的对象更好。

如果方法的调用者无法区分不同的(命名良好的)参数,那么也许他不应该首先调用该方法。

于 2013-10-28T08:08:01.707 回答
5

根据您的具体情况,Introduce Parameter Object可能是一个相关的重构选项。

更多解释here,我引用以下内容(强调我的):

您经常会看到倾向于一起传递的特定参数组。几种方法可以在一个类或多个类中使用该组。这样的一组类是一个数据块,可以用一个包含所有这些数据的对象来替换。将这些参数转换为对象只是为了将数据组合在一起是值得的。这种重构很有用,因为它减少了参数列表的大小,而且长的参数列表很难理解。新对象上定义的访问器也使代码更加一致,这再次使其更易于理解和修改。

于 2013-10-28T08:26:28.860 回答
0

对我来说,我认为最好的做法是使用数据类(java bean),但是你的参数有一个名为标准的意志,然后你使用这个数据类对象作为参数。

这种方法的缺点是您正在增加系统中的耦合。

于 2013-10-28T08:23:34.243 回答
-4

在这种情况下,您可以使用可变参数概念。

method(int… ids){
    userid = ids[0];
    productid = ids[1];
}
于 2013-10-28T08:19:20.600 回答