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

时间:2011-01-20 13:24:39

标签: java refactoring coding-style

  

可能重复:
  What's the best way to refactor a method that has too many (6+) parameters?

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

3 个答案:

答案 0 :(得分:12)

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

Foo foo = new Foo(name, id, description, path, bar);

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

Foo foo = new FooBuilder().setName(name).setPath(path).build();

答案 1 :(得分:3)

这可能是一组合适的参数,但很多时候我的回答都是肯定的。将参数分解为逻辑子分组(如果它们存在),即不是从许多不同的部分创建Car,将某些部分分组为Engine对象,将某些部分分组为Chasis等。

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

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

答案 2 :(得分:0)