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