最佳代码宽度的研究?

如果您在IDE中启用“查看右边距”,则可能会默认为80个字符。 除了几年前我曾经在一家公司工作过的标准,我没有理由把它改成120,没有别的公司告诉我做不同的事情。

我的问题是,是否有任何研究显示80个字符是代码可读性的最佳宽度,或者这个值只是“这是它永远存在的方式”,没有人真正知道为什么会这样? 而且,一行代码的宽度应该是你编码标准的一部分吗?

实际上,80列的东西早在DOS之前。 它来自80列设备的卡片。

为了回答OP的问题,一个“研究”已经进行了大约600年 – 印刷书籍。 这些经过几个世纪的发展,首先是可读性,到现在我们所处的位置,文本的平均线长约为60个字符。 所以为了便于阅读,请select较窄的利润率。

请稍后维护您的软件,并坚持80个字符的限制的程序员怜悯。

select80的理由:

  • 在笔记本电脑上可以读取更大的字体

  • 留下两个版本并排比较的空间

  • 在IDE中留出导航视图的空间

  • 打印没有任何断行(也适用于电子邮件,网页,…)

  • 限制一行中的复杂性

  • 限制缩进,进而限制方法/function的复杂性

是的,它应该是编码标准的一部分。

我没有学习,但是我会把我的经验联系起来。

处理文本时,我发现水平滚动是乏味的 。 我查看代码将被使用的环境,并根据该上下文设置宽度标准。

例如,当我在XWindows上使用Emacs 的时候,在任何时候都可以并行使用2个Emacs窗口。 这限制了他们80个字符,所以这是我的最大线路长度。

有一次,我在Visual Studio中的1920×1200屏幕上工作。 我会保持最大化,所有的工具窗口停靠在一边。 两个编辑器窗口有足够的空间并排放置,大约有100个字符。

我还发现,最长的行来自具有长参数列表的方法调用 。 这有时是一种代码味道 :也许该方法应该重构

如果你和你的联合程序员有高分辨率的屏幕和锐利的视力,通过一切手段使用一个小字体和长线。 相反,你可能需要短线。

除非公司另有说明,我通常使用120-150。 但是,这也取决于代码的types:

  • 我(几乎)从不在一行上使用多个语句
  • 我只使用长线(> 12),只有看起来相似的线可以alignment,而不是损坏。
  • 我总是使用足够的空格/括号等
  • 我比较短的名称更喜欢较长的variables名称

直到几年前,我限制到100,但现在通常使用宽屏,高分辨率显示器120甚至可以在笔记本电脑上看到(我几乎不用)。

比较一个屏幕和一本书是不是很好,因为一本书有更多的垂直空间和一个屏幕有更多的水平空间。 我总是尽量保持最大的function。 一个可见的屏幕长。

也许这80个字符也是避免这些糟糕的吸气链的一个好处:

 object.getFoo().getBar().getFooBar().get ... 

如果将其限制为80个字符,也许有人会将这些variables本地化,并进行空检查等,但也许大多数程序员会让他们在下一行换行。 我不知道

除此之外,上面提到的starblue有80个字符。 这应该有把握地进入编码标准。

右边距选项用于显示页面的宽度,如果要打印代码,并且之前已发布说已将其设置为80,因为这是GUI历史上在GUI重新打印之前的行长度牌。

为了提高代码质量,我在最近看到了一些博客上的推荐(不记得是什么博客),为了提高代码质量,其背后的逻辑是,如果屏幕上的代码更less,则可以编写更短的代码行shouterfunction。

在我看来,较短的行使读代码和debugging更容易,所以我试图保持行简短,如果你必须设置一个限制,让自己写更好的代码,然后select适合你 – 也是如果你更有效率更长的行可以随意增加页面大小和代码只在宽屏幕上。

我清楚地记得阅读某处(我认为这是在敏捷文档中 ),为了获得最佳的可读性,文档的宽度应该是两个字母,或者是60-70个字符。 我认为旧docker的线宽部分来自旧的印刷规则。

就我所知,80字符被用作编码标准来保持与命令行编辑器的兼容性(默认terminal宽度通常是80个字符)。 对于现代的IDE和大屏幕分辨率,80个字符可能不是“最佳”,但对于许多开发人员来说,在terminal中保持可读性是至关重要的。 由于这个原因,很可能不久的将来会将80个字符的宽度作为代码宽度的实际标准。 为了回答你最后的问题,是的,代码宽度以及其他会影响你的代码的可读性的特性应该在你的编码标准中得到解决。

正如有些人在其他答案中指出,80个字符限制的原因部分是历史的(打卡,小屏幕,打印机等),部分是生物的(跟踪你在哪条线上,总体来说是好的,能够看到整个线无需转头)。

这就是说,请记住,我们仍然是人类,我们build立工具来解决我们自己的局限性。 我build议你忽略关于字符限制的整个辩论,只写一些不pipe长度有意义的东西,然后使用IDE或文本编辑器来帮助你正确地跟踪行。 在制表符和空格的争论中使用相同的缩进标记,以及缩进的宽度是多less,我build议你使用缩进标记(最常见的是制表符),只需要人们configuration自己的IDE或文本编辑器来显示它们因为他们觉得对他们最舒服。

坚持每行固定数量的字符总是会让每个人都变得更糟糕,除了目标受众。 这就是说,如果你永远不会分享代码, 那么就没有理由甚至有这个讨论开始。 如果你想分享代码,你应该让人们自己决定自己想要什么,而不是强迫你(或别人)的理想。

无视硬件限制,以及我们如何阅读代码与自然语言的差异,我看到三个主要原因将行限制在80个字符左右。

  1. 人类的眼球是圆的,不是真的狭窄和宽阔, 他们的大部分分辨率是在中间 。 当一次读数小时时,使用一个滚动条根据需要在短弧中扫视眼睛会舒服得多。 我不知道有关代码可读性的正式研究,但是从我自己的观察结果来看,距离显示器2英尺,文本大小为10pt等宽字体,100个字符占据了我的水平字段的1/3或大约60度( 在我们所有眼睛的分辨率所在的30度左右之外 )。
  2. 大多数人在工作时使用大型显示器,这样他们就可以看到多种东西,而不是来回查看,而不是看到一个很大的东西。
  3. 较短的行数包含较less的复杂性,希望迫使开发人员将其代码分解成更易消化的单元。