Eclipse Java Formatter。花括号之前的新行,但不是之后

时间:2011-05-04 13:37:30

标签: java eclipse formatter braces

我们在这里有一个非常奇怪的编码约定,我没有设法在Eclipse中设置Java Formatter来做我想要的。惯例说:

      
  • 在大括号之前“{”应该总是有一个新的行

[UPDATE] 我们的会议中没有规则说,如果“{”之后应该是换行符。这些例子实际上使用换行符(我到目前为止看到的几乎任何约定都表示或暗示在“{”和“}”之后应该总是换行符)。因此,样本1和2都是“语法正确的”。 [/ UPDATE]

由于这会破坏代码,我们的团队决定编写这样的代码(不,这不是我的选择!):

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 个答案:

答案 0 :(得分:2)

所以,这里有关于这个主题的信息。我做了一些更多的研究。这里如此恶名的Brace-Style(样本1)有一个名称:The Horstman Brace StyleHorstman。有一小群人为它辩护,因为它结合了K& R和Allman(样本2)风格的优点。由于支架排成一列,没有“浪费”的空间。

但这不是唯一真实的。这种风格对于VCS来说很糟糕。如果你需要在左大括号和第一个语句之间添加一行,你首先要打破这一行,然后把你的新行放在那里。在差异或合并中,您将看到不是“已添加一行”,而是“一行已被两行交换”。但实际上陈旧的陈述是由你改变的。

另一个论点,不要使用这种风格。

答案 1 :(得分:0)

您是否可以关闭代码格式化程序的相关部分并改为使用模板。例如,当键入

private_

并按ctrl + space将调用private_method模板。然后,您可以将私有模板修改为类似的内容 -

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

您必须对其他块语句执行类似操作,并且您必须修改编码样式以更频繁地开始使用模板,但我认为它可以正常工作。