Eclipse Java Formatter. Новая строка перед фигурными скобками, но не после - PullRequest
2 голосов
/ 04 мая 2011

у нас здесь на работе очень странное соглашение о кодировании, и мне не удалось настроить Java Formatter в Eclipse правильно, чтобы делать то, что я хочу. Конвенция гласит:

  • Перед фигурной скобкой "{" всегда должна быть новая строка

[ОБНОВЛЕНО] В нашем соглашении нет правила, гласящего, должен ли после «{» стоять разрыв строки или нет. В примерах фактически используется разрыв строки (и почти ЛЮБОЕ соглашение, которое я видел до сих пор, говорит или подразумевает, что после "{" и "}" всегда должен быть разрыв строки). Таким образом, образцы 1 и 2 являются «синтаксически правильными». [/ ОБНОВЛЕНИЕ]

Так как это взрывает код, наша команда решила написать такой код (нет, это был не мой выбор!):

public void methode(final boolean b)
{ if (b)
  { do.something();
  }
  else
  { do.somethingElse();
  }
}

Но в форматере мне удалось получить только это:

public void methode(final boolean b)
{
  if (b)
  { 
    do.something();
  }
  else
  { 
    do.somethingElse();
  }
}

или это:

public void methode(final boolean b) { 
  if (b) { 
    do.something();
  }
  else {
    do.somethingElse();
  }
}

Есть ли способ указать форматировщику разбивать строки перед "{", но не после этого? Я знаю, что первый стиль ужасен, и я был бы рад использовать один из двух последних, но это решение компании.

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Итак, вот информация об этой теме.Я сделал еще несколько исследований.А вот так называемый Brace-Style (образец 1) имеет название: Horstman Brace Style или здесь Horstman .Существует небольшая группа людей, которые защищают его, так как он сочетает в себе преимущества K & R и стиля Allman (образец 2).Поскольку брекеты выстроены в линию, и нет «пустого места» пространства.

Но это не единственная истина.Этот стиль убог для VCS.Если вам нужно добавить строку между открывающей скобкой и первым оператором, вам нужно сначала разбить ее и поставить новую строку там.В diff или merge вы увидите не «добавлена ​​одна строка», а «одна строка была заменена двумя линиями».Но фактически старое утверждение было изменено вами.

Итак, еще один аргумент - не использовать этот стиль.

0 голосов
/ 04 мая 2011

Не могли бы вы отключить соответствующие части средства форматирования кода и использовать вместо них шаблоны. Например, при наборе

private_

и нажатие ctrl + space вызовет шаблон private_method. Затем вы можете изменить приватный шаблон, чтобы он был примерно таким -

private ${return_type} ${name}(${}) 
{ ${cursor}
}

Вам нужно будет сделать то же самое, что и для других операторов блока, и вам придется изменить свой стиль кодирования, чтобы начать чаще использовать шаблоны, но я считаю, что это может сработать.

...