Java 如何消除这个()构造函数中的长调用?
我的一个类中的构造函数调用如下所示:Java 如何消除这个()构造函数中的长调用?,java,oop,Java,Oop,我的一个类中的构造函数调用如下所示: API() { this( (new Client.ClientBuilder(AnotherClas.get(YetAnotherClass.class).getA(), AnotherClas.get(YetAnotherClass.class).getBt())) .withF(YetAnotherClass.class).build(),
API() {
this(
(new Client.ClientBuilder(AnotherClas.get(YetAnotherClass.class).getA(),
AnotherClas.get(YetAnotherClass.class).getBt()))
.withF(YetAnotherClass.class).build(),
(new Client.ClientBuilder(AnotherClas.get(YetAnotherClass.class).getA(),
AnotherClas.get(YetAnotherClass.class).getB())
.withE(AnotherClas.get(YetAnotherClass.class).getC())
.withD(AnotherClas.get(YetAnotherClass.class).getD())).build(),
(new Client.ClientBuilder(
AnotherClas.get(YetAnotherClass.class).getA(),
AnotherClas.get(YetAnotherClass.class).getB())
.withY(AnotherClas.get(YetAnotherClass.class).build()
);
}
实际上,情况更糟,因为我混淆了类和方法名
我使用构建器模式生成一个客户机,我的第一个想法是首先生成三个客户机,然后在构造函数调用中传递变量
但是,由于这发生在构造函数中,因此对它的调用必须是第一条语句。有什么我能做的吗?我看到的唯一直接选项是:创建小型辅助方法,用于构造的部分,如:
private AnotherClass makeAnotherClass() {
return new Client.ClientBuilder(AnotherClas.get(YetAnotherClass.class).getA(),
AnotherClas.get(YetAnotherClass.class).getBt()))
.withF(YetAnotherClass.class).build());
如果没有办法摆脱复杂性,那么至少将其转换为更容易理解的“格式”
上面的操作更简单,因为您减少了所需的行数。这意味着你的大脑可以更容易地创建一个“上下文”,在其中“嵌入”代码。这听起来可能是一件小事,但我们的大脑一直在这样做。他们试图抽象以创造“意义”和“分类”。因此,与在一个方法中具有相同内容相比,一组名称良好的小方法更简单
当然,现在可以将构造函数调用更改为
this(makeAnotherClass(), makeYetAnotherClass() ...
是的,这会产生“开销”,因为您现在有了更多的方法;而且它们可能只被调用一次。但它仍然允许你坚持原则。遵循这一原则肯定会提高代码的可读性。可能会分离出一个
addClient()
方法,该方法可以根据需要多次调用。在本例中为3。至少API
对象将通过其init
phaseWell,这完全有道理:)谢谢!