pep-8规范中的“将每行限制在最多79个字符”有多可靠?

5

这个在使用25寸显示器的时代似乎已经过时了。我想知道stackoverflow的成员们对此有何看法,您是否总是遵守这个建议。


25英尺的显示器不存在,而且在很长一段时间内也不会存在。您的意思是“25英寸”。 - SLaks
2
我想,如果你正在使用投影仪... - Wayne Werner
4
在此之前已经讨论过:https://dev59.com/_XVD5IYBdhLWcg3wBm5h - Alejandro
4
Slaks:我在一家非常好的公司工作,他们为所有开发人员进口未来的显示器。 - agiliq
4
简短回答是,将代码限制在80列的宽度上今天和多年前一样荒谬,并且会导致混乱、难以阅读的代码;可以参考PEP-8本身。将宽度设置为120或140是比较合理的。 - Glenn Maynard
请将以下有关编程的内容从英语翻译为中文。仅返回翻译后的文本: - Glenn Maynard
8个回答

14

并非每个人都有25英寸的显示器。我们在这里使用双21英寸的显示器设置,但那绝不是标准。此外,有许多人不是使用最新和最棒的设置进行编写 Python 的专业编程人员,而是像我这样的贫穷大学生,只有19英寸或更小的(笔记本电脑、上网本)显示器。业余程序员和“其他”专业人士可能没有那么好的设置,而学校、公共机构等也受到桌面空间的限制。但80字符的终端基本上存在于任何地方。

有限的宽度(实际上是任何很好的标准)是一件好事,因为它可以在各个领域提供一个漂亮的标准外观。我知道,如果我查看 Python、Pygame、PyPy 或 MyPaint 中包含的模块,每一个都会有一个相当标准的感觉。这有助于我理解代码所需的时间。

关于代码宽度的另一种看法,请阅读这些人所说的内容:这里这里


很好,适合你。 - dawid

12

在任何语言中,我总是遵循80个字符的限制,原因如下:

  • 保持一致性。
  • 可以在多个窗口或列中查看。
  • 方便在新旧编辑器之间无缝切换。
  • 鼓励浅层嵌套、少用参数和简洁表达。

最后一个原因最重要,并且与冗长的命名约定相得益彰。如果代码不能放在一行上或者不能简洁地分为两行,那么无论你的命名如何,代码都需要进行调整。

虽然我把它称作80个字符的限制,但实践中最好保持79或78列,以适应那些坚持显示滚动条和边框的控制台编辑器。

另外,我使用制表符进行缩进,使用空格进行对齐。这样,如果标签大小发生变化,格式不会受到影响。关于80列的规则,我至少确保使用4列制表符时代码不会超出边界,因为比这更大的标签大小较少使用。


所有这些问题都可以通过良好的编程习惯加以解决。屏幕宽度是编辑器能力和个人喜好的问题。 - dawid

11

我尝试使用它,因为我喜欢有一些规则使我的代码规范,但是我知道随着动态换行等特性的出现,这种做法变得越来越少见。例如,Linux内核多年来一直把这个规则视为硬性要求,但最近,他们已经接受了超过80个字符长度的贡献。

还有一件事需要记住的是,许多编辑器提供分割视图功能。我经常在两个文档之间打开两栏,并且在宽屏幕显示器上,这两栏(对我而言)大约有83个字符的宽度。因此,在某些特定情况下,这种规则仍然可以派上用场。


7
79或80个字符的行限制在今天是非常合理的。一些人指出,并不是每个人都有像你这样宽的显示器。此外,你的GUI编辑器并不是代码阅读或编写的唯一地方。以下是几个更多的长行实际上很烦人的地方:
- 并排比较差异。 - 邮件中的代码片段。 - 文本模式控制台(例如,在生产服务器调试期间)。 - 打印出来。 - GUI编辑器被人们使用,他们不会将每个应用程序最大化以填满桌面。(我个人喜欢在屏幕的一侧保持API文档,另一侧放我的编辑器。)

这是非常牵强附会的。打印机并不局限于任何接近80列的东西,而且您可以在短期调试期间轻松编辑控制台中的更长行。 - Glenn Maynard
5
一点也不牵强。我提供的所有例子(包括你不同意的两个)都来自于实际多次的真实经历。使用的打印机种类繁多,驱动它们的软件也各式各样。许多操作人员并不想编辑你的代码,只为了在vi中调整换行位置。我可以继续举例,但我想我的观点已经表达清楚了。从这样的经验中学到的一件事是要记住,整个世界并不像我所做的那样(或者像你所做的那样)去做事。 - ʇsәɹoɈ
编译器无论如何都能理解。它在屏幕上的显示完全取决于用户的喜好。集成开发环境接近这一点,最后的障碍是git diff。 - dawid

5
我认为80个字符的限制非常好,在Python中表现得很好(在Java或JavaScript中可能不是那么容易,但在Python中非常可行)。我总是尽力遵守这个规则。我使用两台24英寸显示器,一台竖屏,另一台横屏,这对我来说非常有价值,因为它允许我在竖屏显示器上并排放置2个窗口,或者在横屏上放置大约3.5个窗口。
虽然编辑器会换行长行,但它们以一种丑陋的方式进行换行,破坏了代码的流畅性,使其更难阅读。

3

为了提高可读性,尽可能将代码长度控制在合理范围内是一个好主意。

过于严格地限制代码的字符数,增加额外的换行(这会影响可读性),只是为了遵守这种任意的规定是不明智的。

(更糟糕的是,你可能会在一个Java项目中遇到那些疯狂长的Java名称,再加上80列的限制和8列的制表符。无法阅读的过度换行的疯狂情况。)


同意,编译器也能理解。它在屏幕上的显示完全取决于个人设置。集成开发环境接近它,最后的障碍是git diff。 - dawid

3

短行更易于阅读——这就是为什么大多数书籍的行长在60-80个字符范围内,而报纸将其文本分成多列以保持行长。如果行太长,那么我认为眼睛会因为从左到右移动的距离而变得紧张,并且更难保持在同一行上。


2
书籍(尤其是报纸)采用短行长度的原因是因为你在阅读散文而不是代码。我很少从左到右、从上到下阅读代码,我认为其他人也很少这样做。较短的行确实有时会使代码更易读,但主要原因并不是与书籍相同。 - Peter Hansen

1

支持短行。以下是我没有看到被提及的几点:

更具体的错误信息。如果一个语句跨越了两行,并且错误出现在第二行,你可以立即排除第一行引起问题的可能性。

在像Perforce这样的版本控制系统中冲突的机会更少。(顺便说一下,这也是按字母顺序排序包含语句的好理由。)

人们在移动设备上查看代码。你可以在iPhone上舒适地阅读80个字符的行从github。更长的行需要z形滚动,这很快就会变得烦人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接