自动格式化代码

时间:2009-11-04 14:44:20

标签: java code-formatting

我们的团队最近继承了非常混乱的代码。

因此,我的团队负责人决定在保存文件之前实施自动格式化代码的策略。我们甚至在E​​clipse(我们选择的IDE)中找到了一个选项,可以在每次保存操作之前自动格式化代码。

我个人反对它,因为我认为正确的编码可以防止凌乱的代码(大部分时间),而自动格式化并不意味着正确编码。

你有什么看法?

12 个答案:

答案 0 :(得分:15)

我不同意你的意见。对我来说,格式化,即使它只是一种“呈现”源代码的方式,也是一个重要的代码质量指标。

使用自动格式化有几个优点。它使团队所有开发人员的格式同质化。这样可以避免SCM操作带来的麻烦:例如,合并两个实际更改很少的文件,但很多格式差异都是一场噩梦!

它还可以显示一些错误。例如:

if (aCondition)
    foo();
    bar();

将重新格式化:

if (condition)
    foo();
bar();

if声明中显示第二行

最后但并非最不重要的是,格式良好的代码(不仅仅适用于Java)更易于阅读!

答案 1 :(得分:8)

仅对继承的代码进行一次自动格式化,然后在不进行自动格式化的情况下继续。

答案 2 :(得分:5)

在我看来,一致的代码格式化提高了易读性。它显然无法替代优秀的代码,但另一方面,格式化的最精彩的构造也不能称为良好的代码。

对我来说自动格式化的问题主要在于它会扰乱版本控制系统。格式化的一次性转换 - 无需任何其他更改 - 可以很好地改进工作流程。

答案 3 :(得分:3)

一致的代码格式确实有助于在提交代码时进行差异化。

我已经将我的源代码控制脚本配置为在推拉时自动格式化为“家居风格”,并在拉动时自动格式化为我喜欢的样式,所以每个人都很高兴。

我建议你考虑一下。

答案 4 :(得分:3)

我和你的团队负责人在一起,我有两个建议:

  1. 将每个文件保存到唯一的文件中 更改是使用的格式 提交反映该信息的消息 这就改变了,然后去 返回并制作您的实际代码 变化。这将为您节省很多 你需要差异的时候 变化。格式修订将 几乎每行代码 改变了,所以它实际上是 无法找到真正的改变 相同的修订版。

  2. 同意编码标准和 自定义Eclipse的自动格式化工具 遵循该标准。

答案 5 :(得分:2)

取决于“无组织”的含义。我们是在谈论风格上的不一致,还是阶级结构是难以理解的大杂烩?如果你是通过自动格式化程序来解决它的话,我猜测前者。

“正确编码”并不一定意味着“跨开发人员一致”。如果我将我的编辑器设置为四个空格的硬标签并且您将其设置为三个空格的软标签,那么我们所使用的代码看起来就像屁股。 (而且我们的项目经理可能会把我们两个都放在头上,让我们知道我们应该使用什么标准。)

自动格式化程序是一种蛮力的解决方案,并且几乎可以保证偶尔会将某些不寻常的东西变成乱七八糟的东西。如果代码真的那么混乱,那么这是一个明智的起点。但是,一旦你从预先存在的代码中自动格式化了大部分Suck,你最好建立团队首选的样式约定并从那里开始。

答案 6 :(得分:2)

作为开发团队负责人,我反对自动格式化。因为可读代码很重要,所以负责任的开发人员可以根据需要格式化代码。自动格式化程序可能会破坏精心制作的注释,它们会为了清晰起见而删除额外的空白行等。

我们使用checkstyle这样的插件,必须遵守标准规则集,检查代码应该没有checkstyle警告。如果出现一些非结构化代码,eclipse格式化程序可以进行第一次清理和checkstyle,并且朋友指出要解决的问题。

答案 7 :(得分:1)

我们实际上在eclipse中使用自动格式化,并且经常使我的代码可读性降低,例如通过插入许多换行符。当我们迁移到新的eclipse版本时,虽然我们使用了相同的设置,但格式并不相同。与版本控制系统相结合,这是一个巨大的缺点。我更喜欢CheckStyle-plugin来实现一致的代码风格。

但是如上所述,我会在重构文件时使用autoformatting。

答案 8 :(得分:1)

我认为您的代码格式很重要。给出的例子确实突出了愚蠢错误的可能性,例如蠕变,但我会用这个例子争论总是使用括号!

我发现在查看具有各种不同格式的源文件时,您必须更加努力地理解代码。常规代码模式使得理解语义变得更容易,因为语句都“在正确的位置”。

我不确定“正确编码”是什么意思,因为对于什么构成“正确”似乎有些模棱两可。有些语言结构可能永远不会在正常情况下使用,而软件工程应该避免使用反模式。如果这些东西是正确编码的意思,那么确定这些东西很重要,但它们并不反映源文件文档的格式。

有一些工具可以通过违反格式化构建失败来强制源文件中的代码格式化。起初我对这些工具持怀疑态度,因为它们看起来有点严厉,但我发现使代码结构统一可以提高生产效率。

P.S。最后的陈述完全是轶事,因为我没有指标支持它。

答案 9 :(得分:0)

我在Eclipse中启用自动格式化时可以想到的一个问题是,如果你正在使用源代码控制(你正在使用源代码控制,对吗?),差异将是巨大的,这将使它可能难以破译什么是真正的代码更改与格式更改。

话虽如此,拥有格式良好的代码对于编写可靠的软件至关重要。

答案 10 :(得分:0)

格式化代码非常重要:

  • 通过正确缩进代码,可以更轻松地在用户上浏览中型或大型文件。
  • 通过在所有项目中保持一致的编码风格,当人们转移到其他项目时,他们将更熟悉代码。当然,这也与编码指南,如何命名变量等有关,这些变量也应该在共同的基础上进行相对规范化。
  • 如果您花一些时间做正确的代码格式化规则,您还可以保证更多用户可以查看代码(遗憾的是,我不得不手动编写代码,手动编辑代码[think notepad或emacs]。通过将行长度设置为80 cols左右可以提供帮助)
  • 最重要的是,通过保持格式一致,您可以区分两个文件更容易

答案 11 :(得分:0)

在您的职业生涯中,您应该遵循每个公司的标准。这意味着大多数时候您可能不同意该政策。

抱怨必须使用公司标准进行自动格式化是不专业的,并且最终对你的老板和高层人员看待你的方式不利,因为他们会认为你不是团队合作者。无论标准格式是什么,你都会习惯于你想要的东西,有一天当你是经理时,你可以选择格式化的方式。与此同时,这不是你的电话(你没有代码库,公司也没有),你需要做你被要求做的事情。

如果你有一些关于autoformat如何使代码更难阅读的有效例子,你可以与你的老板分享,但老实说,这是一场你不可能赢得的战斗,这只会让你看起来很糟糕。