多年前,当我开始进行一个小型开发项目时,其他的开发人员和我坐下来商量达成了一种折衷的括号和缩进风格。虽然不是任何人最喜欢的,但也不是任何人真正讨厌的。我编写了一个.indentrc配置文件,以该样式为基准,并有一个检入触发器,可以在每次检入文件时运行indent命令。这样无论你用哪种样式编写代码,都会在别人看到之前成为团队标准,从而保证了代码风格上的一致性。但我从未见过其他人在此之前或之后采用这种方式。
那么,你们其他人怎么看呢?这是个好主意,还是灾难?
多年前,当我开始进行一个小型开发项目时,其他的开发人员和我坐下来商量达成了一种折衷的括号和缩进风格。虽然不是任何人最喜欢的,但也不是任何人真正讨厌的。我编写了一个.indentrc配置文件,以该样式为基准,并有一个检入触发器,可以在每次检入文件时运行indent命令。这样无论你用哪种样式编写代码,都会在别人看到之前成为团队标准,从而保证了代码风格上的一致性。但我从未见过其他人在此之前或之后采用这种方式。
那么,你们其他人怎么看呢?这是个好主意,还是灾难?
我认为这是个好主意。我觉得可以更进一步,让每个人在他们的IDE中使用配置文件,以便默认使用协商一致的编写风格。如果他们将要查看其他人的代码,则最好适应中性样式。即使是他们自己的代码,在一次提交和检出周期后也应该采用中性样式,那么为什么要用自己的个人风格开发新代码呢?
如果你只限制于强制约束花括号和缩进的样式,那么我认为这是个好主意。然而,如果你试图强制执行每一个格式标准,那么可能不太可行。在我看来,有时打破标准是有道理的。例如,我更喜欢
int x = y * z;
to
int x = y*z;
因为更易于阅读。然而,我非常喜欢
int a = b*c + d*e;
to
int a = b * c + d * e;
听起来是个不错的主意。只要最终的样式不是完全陌生的东西,那么这是确保开发人员使用该样式的好方法。而且它还有一个额外的好处,就是他们不必以这种方式编码 - 当他们提交更改时,它将被重新格式化。如果您能够将这样的工具插入到您的CVS(通用术语)中,那将是很不错的。
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强制执行的。效果还算不错。
.editorconfig
文件并安装相应的插件,编辑器将在您输入代码时对其进行格式化。我相信你现在已经决定了你的开发环境。如果你使用Eclipse,你可以在Java编辑器上启用格式化源保存操作,这样每次保存时都会重新格式化。这样做的主要好处是,在源代码库中标记源代码更改的时间是在实际更改时,而不是后来重新格式化时。
将其变成自动步骤。以后你会感激不已。