2

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

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

[更新] 我们的约定中没有规定,“{”之后是否应该换行。这些示例实际上使用了换行符(到目前为止,我看到的几乎所有约定都表示或暗示在“{”和“}”之后应该始终是换行符)。所以样本 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();
  }
}

有没有办法告诉格式化程序在“{”之前换行但在那之后不换行?我知道第一种风格很糟糕,我很乐意使用后两种风格中的一种,但这是公司的决定。

4

2 回答 2

2

所以,这里有关于这个主题的信息。我做了更多的研究。这里如此可恶的 Brace-Style(示例 1)有一个名称:Horstman Brace Style或这里Horstman。有一小部分人为它辩护,因为它结合了 K&R 和 Allman(样本 2)风格的优点。由于牙套是一字排开的,不会“浪费”空间。

但这不是唯一正确的。这种风格让VCS惨不忍睹。如果需要在左大括号和第一条语句之间添加 Line,则需要先换行,然后将新行放在那里。在差异或合并中,您将看到不是“添加了一行”,而是“两行交换了一行”。但是实际上旧的声明已被您更改。

所以另一种说法,不要使用这种风格。

于 2011-06-08T10:40:13.370 回答
0

您能否关闭代码格式化程序的相关部分并改用模板。例如打字时

private_

并按 ctrl+space 将调用 private_method 模板。然后,您可以将私有模板修改为如下所示 -

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

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

于 2011-05-04T14:10:58.650 回答