C#方法中有多少参数可以接受?

Val*_*itz 19 c#

我是C#的新手,必须维护一个C#应用程序.现在我找到了一个有32个参数的方法(不是自动生成的代码).

从C/C++我记得经验法则"4参数".它可能是一个老式的规则,它可以回溯到旧的0x86编译器,其中4个参数可以容纳在寄存器中(快速)或者在堆栈中.

我并不关心性能,但我确实感觉即使在C#中,每个函数的32个参数也不容易维护.

或者我完全不是最新的?

C#的经验法则是什么?

谢谢你的提示!

Ode*_*ded 17

没有普遍的共识,这取决于你问的是谁.

总的来说 - 时刻可读性受到影响,有太多......

鲍勃马丁说理想的参数数量是0,而3正在拉伸它.

32个参数是一个巨大的代码气味.这意味着课程的责任太多,需要重构.即使应用参数对象重构听起来像是隐藏了一个糟糕的设计而不是解决问题.

从第10周的清洁代码提示:

函数应该有少量参数.没有争论是最好的,其次是一,二,三.超过三个是非常值得怀疑的,应该避免偏见.


Car*_*ppa 9

嗯32参数太多了.我猜的人数和人数一样多.然而,常识要求超过6个变得笨拙.

如果您有这么多参数,最好将对象作为单个参数传递并将参数作为属性,至少更容易阅读.

  • @dash 不管你怎么看,这个函数都有一个目的,并且需要 32 个不同的值才能达到这个目的。重构你想要的一切,在代码中的某个点,需要存储 32 个不同的值并传递到某个地方。这些值如何存储和传递是相关的,在一个对象上设置 32 个属性并将其作为参数传递给函数比将 32 个参数传递给函数要干净得多。:) (2认同)
  • 虽然我同意具有这么多属性的对象很奇怪,但有时没有选择,您可以将字段拆分为尽可能多的对象,但如果您确实需要 32 个值,ortodoxy 会遗憾地穿过窗口。如果需要这些值,一切都结束了。任何变化都可能是应用程序的主要功能变化 (2认同)
  • 当然,除非您可以将它分成具有各自属性和职责的多个对象 - 这可以使维护和管理更容易:-)这就是我投票结束的原因 - 这一切都是真正的意见(除非你完全正确, 32太多了!) (2认同)

Den*_*nis 5

C# 不限制参数的最大数量,AFAIK。
但 IL 确实:0x1FFFFFFF。

当然,这篇文章并不是编写具有大量参数的方法的指南。