传递给函数的参数个数?

Asi*_*jad 11 c#

我想知道有多少参数可以传递给函数,我的意思是什么是好的编程实践,关于将参数传递给函数?

Ant*_*lev 8

Code Complete建议最多7个.这是因为The Magical Number Seven,Plus或Minus Two:

...人类在工作记忆中可以容纳的物体数量是7±2; 这通常被称为米勒定律.

以下是Code Complete第2版的摘录:

将例程参数的数量限制为大约7

七是人们理解的神奇数字.心理学研究发现,人们通常无法同时跟踪超过七个大块的信息(Miller 1956).这一发现已经应用于大量学科,并且似乎可以安全地推测大多数人不能同时跟踪超过七个常规参数.

  • 如果数字是7±2,我们不应该采用低端并说最多5个? (4认同)

Joe*_*oel 5

越少越好,但前提是它仍然有意义.我从未听说过要通过的标准数量的参数,但我听说过如何更好地保持它们.

例如,不要这样做:

public void DoSomething(string name, int age, int weight, ...) { }
Run Code Online (Sandbox Code Playgroud)

反而:

public void DoSomething(Person person) { }
Run Code Online (Sandbox Code Playgroud)

但希望不言而喻.但是,我建议不要创建一个奇怪的类来减少参数计数.