Eclipse Formatter点破

时间:2018-08-17 18:37:00

标签: java eclipse code-formatting eclipse-formatter

考虑此代码段

StringBuilder sb = new StringBuilder();
sb.append(1).append(2).append(3).append(4).append(5).append(6).append(7).append(8).append(9);

比方说,我们想使用Eclipse格式化程序来格式化它,并且行长度限制很短,因此在StackOverflow上看起来不错。我们可能希望得到这样的东西:

StringBuilder sb = new StringBuilder();
sb.append(1).append(2).append(3).append(4)
    .append(5).append(6).append(7).append(8)
    .append(9);

相反,它根本不会被包装,因为显然格式化程序不知道允许在“点”上打断。确实,即使我自己包装它,然后告诉它格式化,它也会撤消包装。当函数调用接受两个参数时,情况会变得更糟,因为它会认为:啊!逗号后我可以休息。结果看起来很糟糕,我什至不想在这里展示。

坦率地说,现在有一些变通方法,例如//@formatter:off,甚至还有一些相当轻量的变通方法,例如

StringBuilder sb = new StringBuilder();
sb.append(1).append(2).append(3).append(4)//
    .append(5).append(6).append(7).append(8)//
    .append(9);

注释在其中充当“屏障”,以防止其合并行。 但是,这全都是“与格式化程序作斗争”。无论如何,我有办法与我合作而不是与我对抗吗? (也许正确的做法是只告诉它保留所有换行符,但我忍不住觉得它应该仍然能够引入遗漏的换行符,即使开发人员将其遗漏了。)< / p>

鉴于当前功能集,格式化程序可以执行此操作吗?

0 个答案:

没有答案