1

我正在开发一个 Java 项目,团队中有大约 10 名开发人员。我们都使用 Eclipse 作为 IDE。

为了使团队中的源代码风格更加一致,我想知道任意使用代码格式化程序模板是否有意义?我的意思是在签入代码之前唯一要做的就是在 Eclipse 中使用代码格式化程序。

总的来说,我知道团队将从一致的代码风格中受益。问题是——它应该作为强制规则起作用吗?也许它太死板了。

示例 1:模板强制最大线宽为 80。但是如果某些行被分成许多行,那就很难看。当然我知道 80 是可配置的。

示例 2:Eclipse 格式化代码:

int green = 1;
int red = 1;
int orange = 1;

我喜欢的代码:

int green  = 1;
int red    = 1;
int orange = 1;

所以我的意见是使用代码模板,但不死板,违反模板是允许和必要的。您对此有何看法?

4

3 回答 3

2

我宁愿创建一个汇总规则的文档,并让每个人都阅读它。规则是要被打破的,你并不总是希望你的代码格式化程序自动为你完成工作(在我的例子中,这经常发生在多行 if 语句中)。

而且因为你不会总是适用于编码标准,每次有人使用自动格式化程序时,他/她都会在你的 git/svn/cvs 中造成严重破坏,换行,实际上并没有改变。

所以我的建议 - 不要使用自动格式化,并说服/学习/强迫人们编写可读的代码。并进行代码审查!

于 2012-06-03T11:06:05.410 回答
2

我们使用的是checkstyle,在Eclipse中配置(在编码时帮助开发人员)和作为Maven 插件来进行自动验证和报告。它检查Sun/Oracle Java 代码约定(它们是事实上的标准)和其他良好实践。每个人都知道规则,并且可以应用一些符合约定的自动格式化小技巧(即间距,...)。我们还进行代码审查。

在大多数情况下,我会尽量避免将个人意见考虑在内,因为这只会导致开发团队之间的激烈冲突。例如,在您的示例 2 中,Eclipse 应用了“标准”格式,所以我不会仅仅因为个人认为它更容易理解而尝试使用另一种格式。

在我看来,这有几个优点:

  • 从“集体代码所有权”的角度来看,所有代码似乎都是由同一个人编写的。
  • 在不同项目之间移动开发人员更容易。
  • 代码更易于阅读和维护。
  • 是否有人更喜欢其他 IDE 并不重要。

对于新项目,一旦您使用 Maven 进行自动 checkstyle 验证,我认为进行严格验证是一个好主意。也就是说,将代码样式错误视为编译错误(不仅仅是警告),如果代码样式无效,则构建将被破坏。它一开始需要一点纪律,但最终会导致更高的代码质量。

于 2012-06-03T11:24:47.843 回答
0

我们将格式化程序配置检查到版本控制中,并将格式化程序配置为保存操作。

这要求每个人都使用 eclipse,但您已经这样做了。

它具有以下优点:

  • 格式一致
  • 没有人花时间格式化代码
  • 没有人争论代码审查中的格式

它的缺点是格式化程序有时会做一些奇怪的事情。这可以解决如下:

  • 重写有问题的语句(例如,提取局部变量以缩短行并避免换行)
  • 向格式化程序提供提示(例如,您可以通过跟随它们来强制保留换行符//
  • 使用开/关标签禁用一段代码的格式化程序
于 2012-06-03T12:42:37.930 回答