Java中构造函数中的长参数列表

BB.*_*BB. 5 java refactoring coding-style

可能重复:
重构具有太多(6+)参数的方法的最佳方法是什么?

如果构造函数有一个很长的参数列表,我们应该考虑它的坏样式并重构它吗?如果有,怎么样?

Boz*_*zho 13

考虑使用Builder.而不是有一些构造函数,其中一些参数可以是null:

Foo foo = new Foo(name, id, description, path, bar);
Run Code Online (Sandbox Code Playgroud)

而不是伸缩构造函数 - 即为每个参数组合创建一个构造函数,您可以:

Foo foo = new FooBuilder().setName(name).setPath(path).build();
Run Code Online (Sandbox Code Playgroud)


Gar*_*ryF 3

这可能是一组合适的参数,但很多时候我的答案是肯定的。如果参数存在,则将它们分解为逻辑子组,即不是从许多不同的部件创建汽车,而是将一些部件分组到引擎对象中,将一些部件分组到底盘等中。

或者,如果其中一些参数是可选的,请使用构建器模式,以便仅在必要时包含它们。

但最终,请做对您和您的领域最有意义的事情。