代码之家  ›  专栏  ›  技术社区  ›  Fostah

具有标准编码风格的优点研究

  •  10
  • Fostah  · 技术社区  · 15 年前

    关于stackoverflow,有几个问题是关于什么是最佳编码约定/样式的研究。这不是问题所在。这个问题是关于是否有任何研究,研究是否有任何优势,生产力的提高或其他积极的副作用,有一个组织范围的编码惯例和风格。

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

    我只想知道是否有研究支持或反驳我的观点。

    3 回复  |  直到 7 年前
        1
  •  14
  •   Robert Cartaino    10 年前

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

    一致的编码样式帮助分块

    这与人类记忆的工作方式有关。它叫 组块 . 例如,研究得很好的现象是 国际象棋大师更擅长记住 象棋的位置比不熟悉棋艺的人要多。但只有当棋子以“自然位置”出现时,才能在正常比赛中出现。如果你把棋子放在随机的位置,国际象棋大师是 没有更好的 比不下棋的人 在记忆板位置时。

    同样的概念也适用于程序员。当编码风格一致时,编码结构对程序员来说是“自然的”,并且代码的大部分更容易被同化。我们的短期记忆容量大约是“七个正负两个”的块,所以,那些熟悉的块越大,我们的大脑在记忆中能积极保存的原始数据就越多。( George Miller )

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

    流动时间

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

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

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

        2
  •  7
  •   Firas Assaad    15 年前

    我们的研究支持这样一种观点,即编程计划的知识和编程话语的规则可以对程序理解产生重大影响。在他们的《编程风格的元素》一书中,Kernighan和Plauger也指出了我们所说的话语规则。我们的经验结果充分说明了这些规则:程序应该以特定的风格编写,这不仅仅是一个美学问题。相反,以传统方式编写程序有一个心理基础:程序员强烈期望其他程序员将遵循这些话语规则。如果违反了这些规则,那么程序员随着时间积累的期望所提供的实用程序实际上是无效的。本文所描述的与初学者和高级学生程序员以及专业程序员的实验结果为这些说法提供了明确的支持。

    Empirical Studies of Programming Knowledge. Soloway and Ehrlich.

        3
  •  0
  •   Sam Harwell    15 年前

    我对这一问题最为了解的地方是:

    C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (萨特,亚历山大斯库)

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