Подтвердить что ты не робот

Как использовать различную перенос строк для строк и других элементов в Eclipse для Java

Я хотел бы использовать перенос строк после оператора для строк и переноса строк перед оператором для других элементов (числа, пользовательские объекты,..) в Eclipse для Java.

При добавлении чисел с разными знаками операторы для меня важнее, чем числа. Было бы неплохо, если бы операторы на фронте лучше прочитали утверждение:

а.

int foo =  baaa
           + veryveryveryloooooongexpression
           - shortexpression
           + anotherexpression;

против.

В.

int foo =  baaa +
           veryveryveryloooooongexpression -
           shortexpression +
           anotherexpression;

С другой стороны, при добавлении строк, оператор просто используется для продолжения строки, а элементы String для меня важнее. Оператор в конце строки дает подсказку, что что-то происходит в следующей строке. Поэтому я хотел бы использовать перенос строк после оператора для строк:

В.

String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."

против.

а.

 String message = "Would you like to use line wrapping at " + position
                  +" ? If you want to keep that behavior press Enter."

Статьи по теме:

(В некоторых случаях, конечно, лучше бы улучшить код и использовать одну строку, использовать String.format(...) или использовать String Builder. Здесь не вопрос.)

Как я могу применить различные параметры переноса строки A. (перед оператором) и B. (после оператора) для двух разных случаев (первый элемент - это String vs. first item - это что-то еще) в Eclipse? Есть ли какие-то настройки по умолчанию, которые я не видел? Есть ли плагин Eclipse, который может это сделать?

(Еще несколько комментариев:

  • Изменить: Следующий комментарий действителен только для Eclipse 4.4.2 (Luna) и уже исправлен в Eclipse 4.5 (Mars):

Я не получил обертывание после того, как оператор (Б.) корректно работал, когда переносил аргумент String внутри вызова функции, даже если бы я хотел применить его для обоих случаев. Я включил опцию "Wrap before operator" для двоичных выражений и отключил общий параметр "Никогда не присоединяй уже завернутые строки". Тем не менее оператор + в следующем примере появляется в следующей строке. Я отправил отчет об ошибке в https://bugs.eclipse.org/bugs/show_bug.cgi?id=466919.

    statusBuilder.append("This set is not yet present in the database!\n"
                    + "You can save it by hitting the 'Save' button below.\n");

  • Если я нажимаю Return в середине строки, eclipse корректно переносит строку до или после оператора, в зависимости от параметра "Wrap before operator" для двоичных выражений.

  • Модуль checkstyle Whitespace = > Operator Wrap не поддерживает дополнительные настройки для конкатенации строк.

)

4b9b3361

Ответ 1

Я просто нашел другой вариант: используйте "+//" в конце каждой строки:

String message = "Would you like to use line wrapping at " + position + //
             " ? If you want to keep that behavior press Enter."

Ответ 2

Используйте теги on/off, чтобы отключить форматирование кода Eclipse для определенных блоков кода. Это заставляет вас форматировать код самостоятельно, но он по крайней мере дает вам полный контроль над тем, как выглядит код.

//@formatter:off
String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."
//@formatter:on

Функции включения/выключения должны быть повернуты "ON". В настройках Eclipse: Java > Code Style > Formatter. Нажмите кнопку "Изменить", "Выкл./Вкл. Теги", отметьте "Включить выкл./Вкл. Теги"