提高公司编码风格标准的最佳方法是什么?我们在这里以C#为例。
我想开发人员之间需要考虑很多差异。具体的可能是教育,经验和过去的编程语言。
如何证明某些事情与其他事情相符?
一个人可能会说“我将我的身体移到我使用我的四轮车赚钱的地方”。那么为什么说“我开车上班”更“正确”?
有些人可能会希望使用更多代码行更清晰地编写代码。有些人可能会喜欢更严格的代码。
// Explicit
string text = defaultValue;
if (string.IsNullOrEmpty(text)) {
text = fallbackValue;
}
// Tighter
string text = defaultValue ?? fallbackValue;
或旧的保护性编程风格,你在开头检查错误情况而不是将整个方法体包装在正的if子句中:
public string ChangeText(string text)
{
if (!string.IsNullOrEmpty(text))
{
// Do a lot of stuff
}
else {
throw new Exception();
}
}
// vs.
public string ChangeText(string text)
{
if (string.IsNullOrEmpty(text)) {
throw new Exception();
}
// Do a lot of stuff
}
旧的“我有阅读此代码的麻烦”在这里有效吗?这与将Generics引入C#的情况相同,人们在阅读它时遇到了初步的麻烦。
某些开发人员不习惯的不可读代码与代码之间的界线在哪里?
Phil Haacks“7 Stages of new language keyword grief”的哪一部分在这里有效点?
有没有简单的方法来设置编码标准并在公司中维护它们?
更新:考虑变量命名之类的内容,这些内容无法在文档中真正定义。或者可以吗?
答案 0 :(得分:6)
在公司设置编码标准的最简单方法:
创建标准文档并强制执行。
...人们喜欢抱怨代码质量,但很少会坐下来花时间创建标准文档。值得付出努力,只要您能够执行它(代码审查等),那么您必然会注意到代码的改进。
答案 1 :(得分:5)
您始终可以使用Microsoft提供的免费工具,例如StyleCop。
您可以禁用或修改您不喜欢的规则
答案 2 :(得分:4)
编码风格有两个主要方面:
我认为,对于排名第一的问题,任何争论都没有意义。只需在标准文档中设置一个标准,然后执行它(稍后会详细介绍)。
关于第二个问题,我老实说不确定它是否应该是规范的。我个人喜欢使用返回值来传递函数以检查错误情况,我知道有些人在练习时会感到畏缩。但是在一天结束时,我们通常可以很好地阅读彼此的代码。这些问题更多的是关于你喜欢表达自己的方式,你更容易写什么,我不希望公司制定达到这个水平的规则。
至于如何执行事情,标准文件是好的,但根据我的经验,从来没有阅读或密切关注,很快就会被遗忘。 最佳方式是使用某种自动化工具,告诉您违反了标准。
例如,即使作为一个全新的Java程序员,我也知道何时大写/小写我的标识符,只是因为Eclipse让我(悄悄地,不引人注意地)知道标准是什么。
答案 3 :(得分:3)
首先,你必须始终强制执行编码风格 - 永远不会有同意 那就是为什么我会尝试自动检查一致性。根据您的语言,您可以使用StyleCop(用于.Net)或类似于linux下的缩进。
每个开发人员都可以在他的环境中使用自己的代码样式(重新格式化可以非常简单,具体取决于您的环境),但所有签入的代码都必须符合公司的风格。
您选择哪种款式?嗯,通常已经有流行的风格 - 取决于语言。对于你的例子(C#),我会选择微软风格。最后:只有项目经理(高级程序员)才有权对其进行调整。
答案 4 :(得分:1)
大多数公司使用编码风格指南/约定。这些文件告诉你,即使是一个命令,你应该总是在if体周围做括号,你应该用制表符/空格缩进,等等。
有很多工具可以(自动)检查和执行编码风格。 (java世界的一个例子是checkstyle,它可以集成到eclipse中,也可以集成到像'hudson'这样的持续集成解决方案中。)
答案 5 :(得分:1)
如何证明某事是正确的 正好在其他地方?
简单:不要。选择一种编码风格,进行沟通并加以实施。
答案 6 :(得分:0)
我认为这里的一致性非常重要。除非当前的方法特别糟糕,否则进入关于哪种方式比另一种更好的语义争论并不是很重要。
重要的是团队一致地编写代码,这样如果有人辞职或被公共汽车击中,那么他/她的同事就会知道代码在被迫使用时会发生什么。