Настройки форматера Eclipse для шаблона Builder - PullRequest
37 голосов
/ 21 января 2010

Я крайне разочарован правилами форматирования 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 Code Style -> Formatter -> Line Wrapping» и настройке переноса строк на «Wrap всех элементов, кроме первого элемента, если в этом нет необходимости» для вызовов приводит к:

  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 применить мой предпочтительный стиль форматирования или что-то более близкое к нему, чем любой из вышеперечисленных?

Ответы [ 5 ]

32 голосов
/ 21 января 2010

Используйте комментарии:

   Object o = foo() //
      .bar() //
      .toString();
29 голосов
/ 19 сентября 2013

Отключение форматирования с комментариями или вставка строчных комментариев слишком утомительно.

Лучший способ описан здесь :

... или выможно выбрать «Обтекание строк> Никогда не соединять уже обернутые строки» глобально.Затем вы можете разбить его вручную, и средство форматирования будет форматировать только внутренние строки (или добавлять дополнительные разрывы строк при необходимости).

С этим параметром средство форматирования Eclipse прекратит разрушать ваши операторы построителя.1012 *enter image description here

4 голосов
/ 28 июля 2010

В Eclipse 3.6 Возможно отключить форматирование для области кода. Смотрите мой ответ на

Как отключить форматирование кода Eclipse для определенных разделов кода Java?

3 голосов
/ 21 января 2010

AFAIK, это известная проблема с Eclipse Formatter: https://bugs.eclipse.org/bugs/show_bug.cgi?id=59891

0 голосов
/ 21 января 2010

В меню выберите «Окно» -> «Установки», когда откроется окно, выберите «Java» -> «Стиль кода» -> «Форматтер», и оттуда вы можете создать свой собственный стиль форматирования, выбрав новый параметр или параметр редактирования. При редактировании профиля форматирования открывается новое окно, которое дает вам множество различных вариантов использования.

...