执行编码风格

时间:2008-11-12 15:16:57

标签: coding-style

多年前,当我开始一个小型开发项目时,其他开发人员和我坐下来同意了一个妥协的支撑和压痕样式。这不是任何人的最爱,但这是没有人真正讨厌的事情。我为该样式编写了一个.indentrc配置文件,并且有一个签入触发器,它会在签入时对每个文件运行缩进。这使得它与你编写代码的样式无关,在任何人看到它之前,它最终会成为集团的标准。这具有一致性的优点。但我从未见过其他人在此之前或之后就这样做过。

那么你们其他人呢?好主意还是可憎的?

8 个答案:

答案 0 :(得分:15)

我说好主意。我会更进一步,让每个人在他们的IDE中使用配置文件,以便他们默认使用约定的样式编写。如果他们不得不以中性风格看待其他人的代码,他们也可能会习惯它。在一个签到结账周期后,即使他们自己的代码应该处于中性风格,那么为什么要以自己的个人风格开发新代码呢?

答案 1 :(得分:12)

采用中性编码风格绝对是个好主意。但是,只有在签入来源时强制执行编码样式可能会或可能不是一个好主意(另请参阅下面的Bill'sElie'的答案)。

使用签到挂钩:

Pro:允许编码人员按照自己的意愿书写,因此他们无需考虑标准或更改编写代码的方式。这样可以最大限度地减少对策略的抵制,并且在编写代码时不会对其生产力产生负面影响。

Con:您的程序员可能只是熟悉中性风格,因此您无法获得使用“相同”风格的每个人的全部好处。如果你的程序员必须在一对编程设置中一起工作,他们仍然会在屏幕上受到彼此的编程风格,这将与他们自己的风格或中性风格不同。

更进一步,在开发过程中使用中性风格:

专业:鼓励流畅的中性风格,每个人都可以在签到之前和之后阅读其他人的代码。

Con:您的开发人员会以这种方式遇到更多阻力。根据您的文化,它可能比它的价值更麻烦。

答案 2 :(得分:8)

如果您将其限制为在括号和缩进上强制执行样式,那么我认为这是一个好主意。但是,如果您尝试强制执行每个格式标准,那么它可能不会。在我看来,有时候打破标准是有道理的。例如,我更喜欢

int x = y * z;

int x = y*z;

因为它更容易阅读。但是,我非常喜欢

int a = b*c + d*e;

int a = b * c + d * e;

因为间距代表操作的顺序。

因此,您执行缩进和括号的政策听起来非常好。但如果有人试图盲目执行其他间距规则,我认为它不会很好。

答案 3 :(得分:4)

这听起来不错。只要你最终得到的风格不是完全奇怪的东西,这是确保你的开发人员使用这种风格的好方法。它还有一个额外的好处,就是它们不必以这种方式编码 - 当它们检查它们的变化时,它将被重新格式化。如果有可用的工具可以插入CVS(通用术语),那将是很好的。

答案 4 :(得分:2)

我们将TFS与运行一组Stylecop规则的签入策略一起使用。如果您的代码没有通过,则无法将其签入。确实非常有效。除了一致的样式和良好的评论之外,它似乎也增加了代码的一般质量 - 也许是因为开发人员被迫描述每个方法,事件等他们被迫在检查之前更多地考虑代码英寸

只有MS解决方案,但如果可以使用,则值得。

答案 5 :(得分:2)

使用自动代码格式化程序的最大问题是代码格式化程序无法处理每个方案。

例如,如果代码中有很多SQL,则可能会自动格式化SQL。但是,如果你的SQL超过一行(无论如何都是一条线?)那么 你必须格式化它。到目前为止,我还没有看到一个好的格式化程序,而不是正确处理它。

示例:

String sql = "SELECT * FROM USERS WHERE ID = ? AND NAME = ? AND IS_DELETED = 'N'";

VS

String sql = 
  "SELECT * " +
  "FROM USERS " + 
  "WHERE ID = ? " + 
  "  AND NAME = ? " +
  "  AND IS_DELETED = 'N'";

当你有很长的查询时,第二种格式更具可读性。大多数格式化程序会将其格式化为一行,直到行长。

但是,如果您正在做的只是转动

if(x=1) print("blah"); else print("eep!");

if (x = 1) {
  print("blah");
} else {
  print("eep!");
}

然后格式化器就可以了。我们在工作中做类似的事情;它不是由CVS工具强制执行,而是由IDE强制执行。工作得相当好。

答案 6 :(得分:2)

有一个名为EditorConfig的项目可以在某种程度上解决问题。但是,它目前只能解决缩进问题。

EditorConfig包含many different editors的插件和文件格式标准。通过在项目的根目录中创建.editorconfig文件并安装相应的插件,编辑器将在您键入代码时格式化代码。

这是一种通用方式(与 indentrc 不同,不仅限于C / C ++),但您仍然可以查看此解决方案。

答案 7 :(得分:0)

我相信你现在已经决定了你的开发环境。如果使用Eclipse,则可以在Java编辑器上启用“格式化源”保存操作,该编辑器会在每次保存时重新格式化。这样做的主要好处是源代码存储库在完成时会在源代码存储库中标记,而不是在以后重新格式化源代码时。

让它成为一个自动步骤。你会在以后欣赏它。