Java 从干净代码的角度来看,为什么我们应该避免定义具有三个以上参数的方法?

Java 从干净代码的角度来看,为什么我们应该避免定义具有三个以上参数的方法?,java,c#,oop,coding-style,Java,C#,Oop,Coding Style,我读了一些干净的代码建议,上面说:方法不应该有两个以上的参数,我想知道它有什么问题?如果我们有一个类,如果这个类有很多需要两个以上参数的方法,那么我们应该怎么做?如果我们在这个类中将这些参数定义为private,方法共享这些变量而不是通过参数发送它们,这个类不会变得太脏吗?取决于,如果您使用设计模式(但不是真的),您的代码逻辑将允许您接收类似(数组数据、某些对象、某些标志(可选))的内容作为所需的最大参数 这一切都是关于采用大型代码并使其尽可能小和可重用。 或多或少,您有处理和处理的数据/对象

我读了一些干净的代码建议,上面说:方法不应该有两个以上的参数,我想知道它有什么问题?如果我们有一个类,如果这个类有很多需要两个以上参数的方法,那么我们应该怎么做?如果我们在这个类中将这些参数定义为private,方法共享这些变量而不是通过参数发送它们,这个类不会变得太脏吗?

取决于,如果您使用设计模式(但不是真的),您的代码逻辑将允许您接收类似(数组数据、某些对象、某些标志(可选))的内容作为所需的最大参数

这一切都是关于采用大型代码并使其尽可能小和可重用。 或多或少,您有处理和处理的数据/对象


这只是我对建议声明的看法。当然,有时这并不适用,但您可以尝试制作代码片段,就像乐高积木一样,可以构建一些东西。

您可以使用任何您想要的东西

仅仅为了代码的可读性,应该尽可能减少方法中的参数,并且对参数计数没有限制,您可以有4个或6个参数,在某些情况下这是合理的。 如果您不喜欢许多私有类变量,您可以自由地将这些变量作为参数传递给您的方法,只需与您的同事交谈并一起选择样式即可


这是一门艺术,可以决定哪个决定更适合进一步的程序维护。

我认为这是一条很好的经验法则,但我不会将其视为绝对法则。在某些情况下,只需要有三个以上的参数

避免使用许多参数的原因是,参数较少的方法通常更易于阅读、理解和使用。这也可能表明一种方法需要做很多工作。如果方法和类有一个明确的目的,并且不一次性完成很多不同的事情,那么它们就更容易理解和使用

如果一个方法有很多参数,有几个选项需要考虑:

  • 将任何参数提升为依赖项有意义吗?这方面的一个指示是,对于方法的所有调用,如果始终使用同一对象作为参数
  • 将任何参数提升到属性是否有意义
  • 任何参数都可以是可选的吗?还是添加参数较少的重载或扩展方法?如果调用者不必关心他不需要的东西,这可以使该方法更易于使用
  • 创建包含多个值的参数对象有意义吗?如果经常同时使用某些值,则可能会指出这一点。例如GDI中使用的笔或字体对象。如果对象可以重复用于多个调用,则这一点非常有用
  • 将方法移动到一个新类中,该类接受构造函数中的一些参数,这样做有意义吗?如果多个调用共享参数,也会显示这一点
  • 你能提高抽象级别吗?例如,一种计算两点之间距离的方法,每个点取x,y,z。为点、线等创建类型将使大多数方法保持简短、简单和易于理解

也就是说,参数的数量只是使方法设计良好的一部分。如果这些选项都不能使代码更易于使用和理解,那就让它去吧。

你可以有一个单独的参数,它是一个具有许多属性的类/结构,而不是许多参数。我不仅仅是说那些公共方法,如果我们有这么私有的方法,你想为每个方法参数创建一个类吗?这只是一个帮助编写可读代码的指南。@MohammadNiazm我不怕“创建类”——这是我日常工作的一部分——在不了解它们和整个上下文的情况下,很难判断哪些私有方法应该被重构,以何种方式重构