编码风格:如何改进公司的编码风格和标准

时间:2009-09-22 15:39:17

标签: coding-style

提高公司编码风格标准的最佳方法是什么?我们在这里以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”的哪一部分在这里有效点?

有没有简单的方法来设置编码标准并在公司中维护它们?

更新:考虑变量命名之类的内容,这些内容无法在文档中真正定义。或者可以吗?

7 个答案:

答案 0 :(得分:6)

在公司设置编码标准的最简单方法:

创建标准文档并强制执行。

...人们喜欢抱怨代码质量,但很少会坐下来花时间创建标准文档。值得付出努力,只要您能够执行它(代码审查等),那么您必然会注意到代码的改进。

答案 1 :(得分:5)

您始终可以使用Microsoft提供的免费工具,例如StyleCop

您可以禁用或修改您不喜欢的规则

答案 2 :(得分:4)

编码风格有两个主要方面:

  1. “我在哪里放开撑?”类型问题 - 这些通常是不重要的,即没有真正的理由偏爱一种风格而不是另一种风格。
  2. 实际编码规则,就像我们在函数中间使用return一样。
  3. 我认为,对于排名第一的问题,任何争论都没有意义。只需在标准文档中设置一个标准,然后执行它(稍后会详细介绍)。

    关于第二个问题,我老实说不确定它是否应该是规范的。我个人喜欢使用返回值来传递函数以检查错误情况,我知道有些人在练习时会感到畏缩。但是在一天结束时,我们通常可以很好地阅读彼此的代码。这些问题更多的是关于你喜欢表达自己的方式,你更容易写什么,我不希望公司制定达到这个水平的规则。

    至于如何执行事情,标准文件是好的,但根据我的经验,从来没有阅读或密切关注,很快就会被遗忘。 最佳方式是使用某种自动化工具,告诉您违反了标准。

    例如,即使作为一个全新的Java程序员,我也知道何时大写/小写我的标识符,只是因为Eclipse让我(悄悄地,不引人注意地)知道标准是什么。

答案 3 :(得分:3)

首先,你必须始终强制执行编码风格 - 永远不会有同意 那就是为什么我会尝试自动检查一致性。根据您的语言,您可以使用StyleCop(用于.Net)或类似于linux下的缩进。

每个开发人员都可以在他的环境中使用自己的代码样式(重新格式化可以非常简单,具体取决于您的环境),但所有签入的代码都必须符合公司的风格。

您选择哪种款式?嗯,通常已经有流行的风格 - 取决于语言。对于你的例子(C#),我会选择微软风格。最后:只有项目经理(高级程序员)才有权对其进行调整。

答案 4 :(得分:1)

大多数公司使用编码风格指南/约定。这些文件告诉你,即使是一个命令,你应该总是在if体周围做括号,你应该用制表符/空格缩进,等等。

有很多工具可以(自动)检查和执行编码风格。 (java世界的一个例子是checkstyle,它可以集成到eclipse中,也可以集成到像'hudson'这样的持续集成解决方案中。)

答案 5 :(得分:1)

  

如何证明某事是正确的   正好在其他地方?

简单:不要。选择一种编码风格,进行沟通并加以实施。

答案 6 :(得分:0)

我认为这里的一致性非常重要。除非当前的方法特别糟糕,否则进入关于哪种方式比另一种更好的语义争论并不是很重要。

重要的是团队一致地编写代码,这样如果有人辞职或被公共汽车击中,那么他/她的同事就会知道代码在被迫使用时会发生什么。