使用自动格式化在Eclipse中格式化代码是一个好主意


20

我使用eclipse进行编码,而我们使用的语言是Java。一旦有人建议使用自动格式化程序(CTRL + SHIFT + F)来正确格式化代码,尽管此命令确实对代码进行格式化,但有时我会觉得整体外观很奇怪,并且实际上不太可读。

那么这是推荐做的事情吗?如果不是,在eclipse中格式化我们的代码会更好吗?


我一直使用emacs的自动格式化功能-可能会发生冲突(例如与SC合并)..但是总的来说,标准化格式非常有帮助
Warren

Answers:


34

当多个开发人员使用版本控制系统处理同一代码时,严格的代码格式设置规则将非常有用。如果不同的开发人员具有不同的格式规则,则合并可能会很痛苦,因为对于合并工具而言,相同的代码看起来会有所不同。

Eclipse(或与此相关的任何出色的IDE)具有可以在首选项部分(Java>代码样式>格式化程序)中自定义的代码格式化规则。选择您最喜欢的东西,但同时也要看一下Java标准代码约定。许多开源项目也都有自己的代码约定,可以使用Eclipse格式化程序强制实施。

此外,还有诸如CodeStyle,PMD和Findbugs之类的标准工具可以强制执行其他规则,并有助于避免常见的(低级)反模式和错误。


4
一旦按照自己的方式设置了格式化程序,就可以了。有一个“导出”按钮,可以将其保存到.xml文件中。我们将其放入SVN信息库,因此每个人都可以在签出项目时访问它。
克里斯,

我对此表示同意,并使用PMD和FindBugs等。但是,只有团队中的每个人都遵循并使用代码格式化规则,这才是一个好主意。否则,您最终将得到某些开发人员而不是其他开发人员所做的更改+格式的提交,并且很难看到“真正的”更改。换句话说,如果旧代码尚未使用自动格式化程序格式化,则不要在一次提交中进行其他更改来格式化它。
Mufasa

2
如果您自定义代码格式设置,则可以将这些设置推送到源代码管理中,以便所有开发人员都可以获取它们,或者将其发布在某种Wiki或开发人员文档中,以便所有人都可以同意该样式。
Mufasa

24

我发现自动格式化程序非常有用。您可以设置格式设置规则并让Eclipse为您设置代码格式(理想情况下自动使用“保存操作”自动设置格式),而不必一如既往地对应该如何格式化代码做出微妙的决定-容易出错并且会引起“认知冲突”- )。当然,这需要您具有一致格式的代码库,或者具有根据您设置的规则重新格式化代码的权限。

启用“保存时自动格式化”有点像进行增量编译,它使您的大脑专注于代码本身,而不用担心诸如代码格式或语法之类的琐碎问题。

但是,是的,有时自动格式化程序会弄乱您拥有的一些格式良好的表。在这种情况下,我使用“开/关标签”。这些是在代码格式配置文件的“打开/关闭标签”选项卡下配置的。使用它们,您可以从自动格式化中排除代码中的区域:

// @formatter:off

... my nicely formatted table here ...

// @formatter:on

5
+1:我从不了解(或更准确地说,我从不费心去寻找)开/关标签。
Paul Cager 2013年

1
如果项目中的每个人都使用自动保存格式,则很好。如果只有一些开发人员使用它,那么同时提交更改和代码格式更改就太容易了,这使得在提交中很难找到“真正的”更改。
Mufasa

@Mufasa是的,您是对的。
JesperE

1
当您不希望使用格式注释时,可以编写/ *-我的超级格式* / Eclipse不要格式化此类注释:)
Dawid Drozd

5

是否推荐它取决于您问的人。

我可以想象您会更喜欢自己格式化代码,毕竟,您知道自己最好的和最容易阅读的东西。从好的方面来说,如果您是一个体贴的人,也可以使其对其他人更易读。

机器没有这种预见性,并且可以(就像您说的那样)使您的代码看起来有些混乱,即使它们按照严格的规则对其进行了格式化。

一个好的IDE或工具通常可以为您格式化代码,做得很体面,但并不能总是使其尽可能地可读。

因此,我的建议是:除非您从别人那里收到代码,否则不要使用它,而且情况如此混乱,以至于您无法阅读它。


5

您应该一直使用它,以确保在所有源文件中使用一致的样式。这也将为您节省很多时间,您通常会花费这些时间来尝试手动调整格式。

Eclipse中的Java格式化程序做得很好,并且可以完全自定义。如果您不同意默认设置(我完全可以理解),则应将格式设置调整为自己的个人风格偏好或所使用的标准。您可以在Java /代码样式/格式器下的首选项中执行此操作。

当您不单独工作时,格式化程序会更加有用。您和您的团队成员很可能会在您认为完美的代码样式™上存在分歧。在这种情况下,您应该同意一个共同的基础,并为此一劳永逸地定义格式化程序规则。然后,每个人都可以点击格式快捷键,一切都符合商定的样式。这样一来,您的个人偏好(写作时)就不会受到影响。请注意,格式化程序样式可以存储在Eclipse的项目文件中,因此每个项目也可以使用不同的格式化程序。


0

尽管我喜欢在保存时自动格式化代码(实际上,我在个人项目中启用了它)。我发现我无法在使用基于Eclipse的产品的项目团队中完全推荐这种做法,因为Eclipse格式化程序存在一些严重的错误,使我无法推荐它。

具体来说,如果您启用了“代码清除” +“格式化程序”,则每次保存时缩进都会固定/不固定。

Eclipse的每个新版本都可能会更改格式器(更好),但是会进行重大更改,例如JavaDocs最终会在删除之后的多余空间,*但是在Helios和许多企业使用较早的Rational Software版本的eclipse之后才引入了以Helios为基础。

Eclipse提供的代码格式化程序无法按照其API进行扩展,实际上它明确声明了CodeFormatter javadoc

此类不打算由客户端子类化。

当然,到目前为止,我还没有找到任何可行的非商业替代方案。Jalopy多年没有更新,并且github中的fork尚未组织好,所以我不推荐它们。它也没有用于Eclipse集成的任何更新站点。我实际上计划将代码格式化作为构建的一部分,就像我使用Jalopy进行cleanpom-maven-plugin一样,但是由于缺少Jalopy的更新,所以这个想法被搁置了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.