Java方法应具有的标准参数数量是多少?

14

我正在编写一个程序,用于检查方法的参数数量并输出警告消息(这是一个代码气味探测器)。如果参数数量超过标准限制,那么就会触发警告。但问题在于,我不知道这个标准限制是多少。我已经尝试搜索了一圈,但没有找到任何有用信息。是否有人能够告诉我或者至少指点一下方向?


14
四十二是最好的。 - Andrew Thompson
我相信在字节码中有一个限制,防止256个或更多的参数(包括非静态的this)。 - Peter Lawrey
Joshua Bloch(Google)表示,3个或更少是理想的。 - james.garriss
8个回答

13

在Java中,没有参数数量的标准限制,但是根据《代码大全》(参考此帖子)的建议,您应该将参数的数量限制在大约7个左右,否则会对代码的可读性产生负面影响。


8
数字7可能源于人们在短期记忆中只能同时记住约7个事项的事实。 - Robert Harvey
谢谢大家的迅速回复,我想我会选择6个参数。 - user727308
6
一个方法所能拥有的参数数量在技术上最多为255个。 - scravy
2
静态方法中有255个参数,非静态方法中有254个参数(在这种情况下,“this”也会计算在内)。 - userv
代码在7个参数后就失去了可读性?实际上,这种情况在1个参数后就会发生 :) 一个好的经验法则是:1个参数-很棒,2个参数-可以,3个参数-你确定吗?4个参数-你正在错误地使用OOP(除非你有一个非常好的理由)... - Boris Churzin
理论上,JVM 指定其允许的最大参数数量为 255。因此只有 @userv 是正确的。但在实践中,这取决于每个人的观点。 - Lorenzo

7
这与Java无关。你应该让它可配置,因为对此有完全不同的看法。
在《代码整洁之道》一书中,Robert Martin认为,理想的方法参数数量为0,1个可以接受,2个需要充分的理由,3个或更多需要教皇特别授权。
大多数人认为这太严格了,对于一个有3个参数的方法,他们不会多想。你可能会得到广泛的认同,即6个参数太多了。

6

在Java中,您不能为方法定义超过255个参数。这是限制。

根据Uncle Bob的建议 -Clean Code-,最大参数数量应该为三个。

  • 参数过多,参数xxxxxxx超出了允许方法参数的255个字的限制

2

实际上,并没有一个标准的参数数量。


2

1
这也将参数的最大数量限制在七个。 - Robert Harvey

2

0
在Java函数中,您可以使用任意数量的参数。在Java函数中,没有标准限制此类参数的数量。[据我所知]就个人而言,作为一种实践,您不应该让一个函数的参数超过4个,但这并非标准,您可以有任意数量的参数。

0

没有硬性限制,但我会说,在没有关键字参数的语言(如Java)中,超过五个是代码异味。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接