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,这完全有道理:)谢谢!