Builder模式的Eclipse格式化程序设置

时间:2010-01-20 21:16:39

标签: java eclipse code-formatting

我对一系列合格调用的Eclipse格式规则(即Builder模式样式)感到非常沮丧。例如,以下是我创建新的Apache Commons CLI Options对象的某些代码的首选格式:

  Options options = new Options()
      .addOption(OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
      .addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
          "print version and exit")
      .addOption(OptionBuilder.withLongOpt(OPTION_PROPERTIES)
                     .hasArg()
                     .withArgName("FILE")
                     .withType(File.class)
                     .withDescription("specify a user properties file")
                     .create());

即,参数在必要时被包装和缩进,除非必要,所有合格的调用都将被包装并缩进(如果有多个)。如果参数列表包含在限定调用内,则调用应首先换行。

Eclipse中的默认格式(参数和调用“仅在必要时换行”)会产生以下混乱:

  Options options = new Options().addOption(
      OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
      .addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
          "print version and exit").addOption(
          OptionBuilder.withLongOpt(OPTION_PROPERTIES).hasArg().withArgName(
              "FILE").withType(File.class).withDescription(
              "specify a user properties file").create());

进入“Java代码样式 - >格式化程序 - >行换行”并将换行设置为“包装所有元素,如果不需要,则除了第一个元素外”,以进行调用:

  Options options = new Options().addOption(
      OPTION_HELP_SHORT, OPTION_HELP, false, "print usage information")
      .addOption(OPTION_VERSION_SHORT, OPTION_VERSION, false,
          "print version and exit")
      .addOption(
          OptionBuilder.withLongOpt(OPTION_PROPERTIES).hasArg().withArgName(
              "FILE").withType(File.class).withDescription(
              "specify a user properties file").create());

我不喜欢OptionBuilder表达式没有被包装,或者"FILE"被包裹而没有包裹withArgName

将缩进更改为“列上的缩进”产生:

  Options options = new Options().addOption(OPTION_HELP_SHORT, OPTION_HELP,
                                     false, "print usage information")
                                 .addOption(OPTION_VERSION_SHORT,
                                     OPTION_VERSION, false,
                                     "print version and exit")
                                 .addOption(
                                     OptionBuilder.withLongOpt(
                                                      OPTION_PROPERTIES)
                                                  .hasArg()
                                                  .withArgName("FILE")
                                                  .withType(File.class)
                                                  .withDescription(
                                                      "specify a user properties file")
                                                  .create());

正在打破我喜欢的界限,但将事情推向极右边。

有没有办法说服Eclipse应用我喜欢的格式样式或者比上述更接近的格式呢?

6 个答案:

答案 0 :(得分:32)

使用评论:

   Object o = foo() //
      .bar() //
      .toString();

答案 1 :(得分:29)

使用注释关闭格式或插入行注释太繁琐了。

最好的方法是here

  

...或者你可以选择“Line Wrapping>从不加入已包装   “全局。然后,你可以手动打破它和格式化程序   将仅格式化内部行(或添加其他换行符,如果   必要)。

使用此设置,Eclipse格式化程序将停止破坏构建器语句。

enter image description here

答案 2 :(得分:4)

在Eclipse 3.6中可以关闭代码区域的格式。见我的回答

How to turn off the Eclipse code formatter for certain sections of Java code?

答案 3 :(得分:3)

AFAIK,这是Eclipse Formatter的已知问题: https://bugs.eclipse.org/bugs/show_bug.cgi?id=59891

答案 4 :(得分:1)

2021 年更新。 可以更改,导航至:代码样式 -> 格式化程序 -> 换行 -> 换行设置 -> 函数调用 -> 限定调用 并将值更改为“包装所有元素,如果不需要,除了第一个元素

答案 5 :(得分:-3)

在菜单上选择窗口 - >窗口打开时的首选项选择Java - >代码风格 - >格式化程序,您可以通过选择新的或编辑选项来创建自己的格式样式。编辑格式化配置文件时,会打开一个新窗口,为您提供许多不同的选项。