我想知道有多少参数可以传递给函数,我的意思是什么是良好的编程习惯,关于将参数传递给函数?
答案 0 :(得分:8)
Code Complete建议最多为7.这是因为The Magical Number Seven, Plus or Minus Two:
......一般人在工作记忆中可以容纳的物体数量是7±2;这通常被称为米勒定律。
以下是Code Complete第2版的摘录:
将例程参数的数量限制为大约七
七是人们理解的神奇数字。心理学研究发现,人们通常无法同时跟踪超过七个大块的信息(Miller 1956)。这一发现已经应用于大量学科,并且可以安全地推测大多数人不能同时跟踪超过7个常规参数。
答案 1 :(得分:5)
越少越好,但前提是它仍然有意义。我从来没有听说过要通过的标准数量的参数,但我听说过如何更好地保持它们。
例如,不要这样做:
public void DoSomething(string name, int age, int weight, ...) { }
而是:
public void DoSomething(Person person) { }
但希望不言而喻。但是,我建议不要创建一个奇怪的类来减少参数计数。
答案 2 :(得分:3)
MAX的恕我直言5。
6对我来说太过分了,7 压倒性的!
答案 3 :(得分:1)
如果您想要传递给函数的内容很多,您可能需要查看一些其他传输数据的方法,而不是简单的参数传递。例如,在某些情况下,最好生成XML文件,然后传递与获取该XML文件周围的数据相关的值。如果您正在运行Web应用程序,它可能只是通过会话或发布数据而不是获取或函数调用来简化您的生活。
此外,您可能希望将某些信息存储为成员变量。
我建议不要超过4.你不希望你的行长得超过30个字符长,除非你生成一些大字符串,但即便如此它也变得非常难以理解和粗略(虽然特别是javascript需要)
答案 4 :(得分:1)
编写程序以便于阅读是一种很好的编程习惯。就个人而言,我尽量不编写具有比屏幕上一行显示的参数更多的函数。通常最多不超过五个或六个参数。
答案 5 :(得分:1)
根据清洁代码 - 最多3
答案 6 :(得分:0)
某些ARM编译器使用寄存器传递三个或更少的参数,并且堆叠的三个以上参数不超过三个。堆栈类型调用比使用寄存器的调用慢,因此在这种情况下,您应该使用三个或更少的参数,以提高速度。
答案 7 :(得分:0)
如果您不知道要传递给函数的参数数量,请使用param将变量参数发送给方法。
答案 8 :(得分:0)
根据体系结构的不同,超过1-3会导致堆栈传递。这比通过寄存器传递要慢。从性能的角度来看,最好传递指向包装类的指针或指向结构的指针。这确保只传入一个值并将一些写入/读取保存到内存中。