10

Stackoverflow 上有几个问题,关于是否有任何研究或研究什么是最好的编码约定/风格。这不是这个问题的目的。这个问题是关于是否有任何研究研究拥有组织范围的编码约定和风格是否有任何优势、生产力提高或其他积极的副作用。

对此我有自己的看法,基本上就是制定这样的标准有巨大的好处。老实说,我不在乎我需要使用什么样式,只要它在我可能必须使用的所有代码中都是一致的。

我只是想知道是否有任何研究支持我的观点或与之相矛盾。

4

3 回答 3

14

有几项研究表明,严格遵守一致的视觉风格有助于经验丰富的程序员将更多的本地问题保留在内存中,而不必记住问题的各个元素。

一致的编码风格有助于分块

它与人类记忆的工作方式有关。它被称为分块。例如,国际象棋大师比不熟悉棋局的人更善于记住棋局,这是一个经过充分研究的现象。但这仅是当棋子出现在正常游戏中可能出现的“自然位置”时。如果您将棋子放置在随机位置,那么国际象棋大师在记忆棋盘位置方面并不比非棋手好。

同样的概念也适用于程序员。当编码风格一致时,编码结构对程序员来说显得“自然”,代码的大部分更容易被吸收。我们的短期记忆有大约“七个加或减两个”块的容量,因此,那些熟悉的块越大,我们的大脑可以在记忆中主动保存的原始数据就越多(乔治米勒)。

当面对随机格式的代码时,程序员必须花费额外的精力来手动解析他们正在处理的问题的各个部分。这消除了在内存中保存较大部分问题以解决问题的能力。这也意味着程序员需要更长的时间才能有效地解决手头的问题。

流动时间

你有没有发现一个问题在你继续处理的时候看起来很清楚,但是当你稍后再回到这个问题时,你似乎“丢失了信息”;即打破你的流动时间?流程时间在Peopleware中有详细记录(所有程序员都必须阅读)。流动时间是程序员完成大部分工作的时间,并且只有在您长时间不间断地解决问题时才能实现。这是因为程序员需要一段时间才能将足够多的问题吸收到认知记忆中,从而有效地解决问题。格式良好的代码有助于我们的视觉图像处理,这意味着程序员可以更快地达到流程时间。

我曾在多家软件公司编写过编码标准。不幸的是,有多少程序员认为编码标准只是对他们如何做事进行不必要的控制的一种手段。一种创造性的审查形式。说实话,实际标准是什么并不重要。其价值在于让团队中的每个人都保持一致,即使这意味着在按照我的方式做事还是按照你的方式做事之间做出一个经常武断的决定。

以下是我上面提到的一些参考资料:

于 2009-08-25T01:29:03.567 回答
7

我们的研究支持这样一种说法,即编程计划和编程话语规则的知识可以对程序理解产生重大影响。在他们名为 [编程] 风格的 [The] Elements of [Programming] 的书中,Kernighan 和 Plauger 还确定了我们所说的话语规则。我们的实证结果证实了这些规则:程序应该以特定的风格编写不仅仅是美学问题。相反,以传统方式编写程序有一个心理基础:程序员强烈期望其他程序员会遵循这些话语规则。如果违反了规则,那么程序员随着时间的推移建立起来的期望所提供的效用就会被有效地取消。

编程知识的实证研究。索洛韦和埃利希。

于 2009-08-25T00:09:34.177 回答
0

我在这个问题上获得最多见识的地方:

C++ 编码标准:101 条规则、指南和最佳实践(Sutter、Alexandrescu)

即使您不是在 C++ 中工作,也值得一读。

于 2009-08-25T00:05:24.980 回答