Могу ли я определить исключения для правил очистки Eclipse?
Чаще всего правила очистки (Preferences > Java > Code Style > Clean Up) в Eclipse отлично работают и создают красивый код.
Но иногда, особенно с комментариями и конкатенированными строковыми фрагментами (например, встроенными SQL-запросами), очистка просто испортит вещи и уничтожает мое форматирование.
Есть ли способ сказать Eclipse "Не трогайте этот блок текста! Я отформатировал его так, как мне нравится, и вы сделаете его менее читаемым"?
Ответы
Ответ 1
Я предполагаю, что вы действительно не имеете в виду "Очистить", но параметр "Исходный код формата" скрыт внутри. Он настроен в настройках > Java > Стиль кодa > Formatter. И действительно, есть опция, называемая "Вкл/выкл. Теги". К сожалению, его по умолчанию. Теперь вы должны написать так:
// @formatter:off
StringBuilder sql = new StringBuilder()
.append("SELECT whatever \n")
.append("FROM some_table");
// @formatter:on
Вполне возможно, что принятый ответ был правильным на момент написания, однако это было введено в Eclipse 3.5, если Im не ошибается.
Ответ 2
У меня возникла одна и та же проблема, и пока у меня нет решения, я могу рассказать вам, как я работаю над проблемой.
Из-за того, как работает форматирование, я намеренно избегаю слишком длинных строк кода. В общем, когда я держу строки короткими, она принимает правильные решения относительно того, как форматировать код. Это может даже работать с операторами SQL, например:
public static final String SELECT_SOMETHING = "SELECT"
+ "OBJECTID, THIS, THAT, THEOTHER, THING"
+ " FROM DBNAME.DBSCHEMA.TABLE_T"
+ " WHERE ID = ?";
Это утверждение формально определяет, потому что, когда возможные элементы разделяются и объединяются вместе. Когда я этого не делаю, я получаю непредсказуемые результаты:
public static final String SELECT_SOMETHING = "SELECT OBJECTID, SOMETHING FROM DBNAME.DBSCHEMA.TABLE_T WHERE ID = ?";
Для комментариев я поместил их все в одну строку, когда это было возможно, и разрешил перенос слов, когда он делает форматирование.
Кроме того, можно изменить стиль с помощью форматирования кода, чтобы все стало лучше для вашего стиля кодирования. Вы можете хотеть, чтобы все в команде использовали один и тот же формат, чтобы избежать конфликтов. Поскольку легче сравнивать изменения с другими разработчиками или предыдущими версиями с помощью вашего средства управления исходными кодами, даже если это делает части вашего кода менее читаемыми, использование форматирования по-прежнему было для меня преимуществом.
Тем не менее, я понимаю ваше разочарование, когда форматер принимает плохие решения!
Ответ 3
Чувствуя, что я отвечаю на свой вопрос, но есть обходной путь, который я сейчас выполняю (обратите внимание: у меня есть эти правила очистки как save-action):
Сохранить (с помощью Ctrl/Cmd-S, не знаю, имеет ли значение, как вы сохраняете) код, и пусть Eclipse испортит ваше форматирование. Затем просто нажмите Ctrl/Cmd-Z, чтобы отменить, и сразу же повторно сохранить. Формат возвращается в исходный формат и, по-видимому, сохраняется по назначению.
Ответ 4
Для операторов SQL в коде вы можете поместить символ одной строки в конце каждой строки. Тогда форматер не может переформатировать его. Это уродливее, чем не нужно это делать, но это красивее, чем если Eclipse форматирует его.
StringBuffer sql = new StringBuffer() //
.append("SELECT whatever \n") //
.append("FROM some_table");
Ответ 5
Нет. (Насколько мне известно, и у меня была такая же проблема, и я смотрел много раз тяжело и долго...)
Ответ 6
(только для комментариев Javadoc)
Если у меня есть блок текста, который отформатирован именно так, как мне нравится, я заключу их в <pre> </pre> теги.
Ответ 7
если вы не хотите, чтобы поле стало окончательным (i.i: потому что вы хотите изменить его во время отладки), вы просто назначаете его самому себе на конструкторе. Это даст предупреждение о затмении, но ваше поле останется не последним.