Stackoverflow上有几个问题,关于是否有任何研究或研究什么是最好的编码约定/风格。这不是这个问题的主题。这个问题是关于是否有任何研究研究拥有一个组织范围的编码约定和风格是否有任何好处,生产力提高或其他积极的副作用。
我对此有自己的看法,基本上就是有这样的标准有很大的好处。老实说,我不在乎我需要使用什么样式,只要它在我可能要使用的所有代码中都是一致的。
我只想知道是否有任何研究支持或反驳我的观点。
发布于 2009-08-24 17:29:04
有几项研究表明,严格遵守一致的视觉风格有助于有经验的程序员在记忆中保留更多的局部问题,而不必记住问题的各个元素。
一致的编码风格辅助分块
这与人类记忆是如何工作的有关。它被称为分块。例如,国际象棋大师比不熟悉这个游戏的人更擅长记住象棋位置,这是一个经过充分研究的现象。但只有当棋子出现在正常游戏中可能出现的“自然位置”时,才会出现这种情况。如果你把棋子放在任意的位置,在记忆棋盘位置方面,国际象棋大师并不比非棋手好多少。
同样的概念也适用于程序员。当编码风格一致时,编码结构对程序员来说是“自然的”,并且代码的较大部分更容易被吸收。我们的短期记忆大约有“7加或减2”块的容量,所以,这些熟悉的块越大,我们的大脑就能在内存中主动容纳更多的原始数据(George Miller)。
当面对随机格式的代码时,程序员必须花费额外的精力来手动解析出他们正在处理的问题的各个部分。这就失去了在内存中保存较大部分问题以解决问题的能力。这也意味着程序员需要更长的时间才能有效地解决手头的问题。
流动时间
你有没有发现过,当你继续工作的时候,一个问题看起来是如此清晰,但当你稍后回到这个问题上时,你似乎“丢失了信息”;也就是说,中断了你的心流时间?Flow time在Peopleware中有很好的文档记录(这是所有程序员的必读内容)。心流时间是程序员完成大部分工作的时候,只有当你在长时间、无间断地处理一个问题时才能实现。这是因为程序员需要一段时间才能将足够多的问题吸收到认知记忆中,以便有效地解决问题。格式良好的代码有助于我们的视觉图像处理,这意味着程序员可以更快地达到流程时间。
我在几家软件公司编写过编码标准。不幸的是,有多少程序员认为编码标准只是一种对他们做事情的方式进行不必要的控制的手段;一种创造性的审查形式。说实话,实际的标准是什么并不重要。其价值在于让团队中的每个人保持一致,即使这意味着在按我的方式做或按你的方式做之间做出通常是武断的决定。
下面是我在上面提到的一些参考:
<--A必须
发布于 2009-08-24 16:09:34
我们的研究支持这样的说法,即编程计划的知识和编程话语的规则可以对程序理解产生重大影响。在他们的书《编程风格的元素》中,Kernighan和Plauger也指出了我们所说的话语规则。我们的经验结果证明了这些规则:程序应该以特定的风格编写,这不仅仅是一个美学问题。相反,以传统方式编写程序有一个心理基础:程序员强烈期望其他程序员会遵循这些话语规则。如果违反了规则,那么程序员随着时间的推移建立起来的期望所提供的效用实际上是无效的。本文中描述的新手和高级学生程序员以及专业程序员的实验结果为这些说法提供了明确的支持。
Empirical Studies of Programming Knowledge. Soloway and Ehrlich.
发布于 2009-08-24 16:05:25
我在这个问题上获得最多洞察力的地方:
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (萨特,亚历山大)
即使你不在C++中工作,这本书也值得一读。
https://stackoverflow.com/questions/1325374
复制相似问题