【问题标题】:Is it bad that I don't follow PEP 8 and cut my lines at 79 characters?我不遵循 PEP 8 并在 79 个字符处减少我的行,这很糟糕吗?
【发布时间】:2010-10-25 07:08:24
【问题描述】:

我认为每个 Python 代码都见过PEP 8。让我印象深刻的部分是:

Limit all lines to a maximum of 79 characters.

我坐在宽屏显示器上,正对着屏幕进行编码。我没有在终端中编码,也不打算在终端中编码。因此,我对字符行限制没有任何问题。

有多少人真正遵守了这个限制?如果您不在 80 个字符限制的终端中编码,您是否仍然遵循它?我不关注是不是很糟糕?

我讨厌这个限制是如何与 Python 的“样式指南”分开的>。

【问题讨论】:

  • 我喜欢非超长的行,但 79 个字符太低了(尤其是今天的重点是屏幕宽度是高度的两倍)。它本身也可以创建不可读的代码,所以我想说与你一起工作的其他人达成协议。我倾向于使用大约 132 个字符。
  • 几乎唯一重要的是当您在 Windows 和 80 字符宽的终端上使用 Putty 时。或者,在 Nano 中编辑而无需自动换行。不过,这有关系吗?并不真地。请注意,PEP 8 最初是在 2001 年编写的。
  • @JAL - 据我所知,PuTTy 没有 80 个字符的限制。我将 PuTTy 会话设置为 178 个字符。

标签: python coding-style pep8


【解决方案1】:

PEP 8:

但最重要的是:知道何时 不一致——有时风格 指南只是不适用。当在 怀疑,用你最好的判断。

【讨论】:

    【解决方案2】:

    你是唯一会阅读代码的人吗?

    无论您使用哪种语言进行编程,都建议您缩短代码行长度。 排长队通常有两种原因:

    1. 深度嵌套代码:这种类型的代码很难遵循,尤其是当您有超过 2 层嵌套时。阅读代码时容易错过 else 子句,或者在阅读较长的函数时忘记了 else 是什么意思。尝试在几个函数中分解代码以提高可读性。

    2. 1234563和运算符在一行中。如果您使用临时变量将逻辑拆分为更容易掌握的更小段,您将显着提高可读性。您还应该查看this

    话虽如此,PEP 只是一个指导方针。当你觉得你有理由这样做时,请随意打破它。如果你大部分时间都破坏了它,你需要重新考虑你编写代码的方式。

    【讨论】:

    • 将事物分解成更小的函数是另一种非常有用的技术。这包括使用一系列生成器表达式。生成器表达式也可以很好地分布在几行上——我通常将iffor 对齐。
    【解决方案3】:

    我发现很难阅读超过 80 个字符的文本。我的眼睛在移回左边距时往往会失去这一行。因此,从某种意义上说,这不是由于必须在终端(或 cmd 窗口或 xterm)上查看代码而受到的限制,但它是可读性要求。 我发现自己有时会违反一两个字符的规则,但总的来说我不介意。此外,我几乎不需要使用 \ 继续字符,因为我利用了列表中的隐式继续。

    【讨论】:

    • 我发现在任意位置(如 79 个字符)添加换行符时代码看起来很混乱。以 PEP 8 class Rectangle 为例。我查看第一个if 语句,必须查看每一行以找到实际代码块的开始位置。代码块中添加了三行if 语句和一个空格。搞砸了我的头。
    • 我觉得很长的 if 语句很容易阅读。断点的行长不一致,但通过始终使用合取运算符进行断点,它们是一致的。我也很挣扎。此外,使用宽屏显示器,您可以并排放置两个文件,这绝对是一个加分项。
    【解决方案4】:

    我将编辑器设置为向我显示 80 个字符的限制行,我将其用作警告,而不是停止标志。如果我可以在达到极限之前整齐地继续下一行,我会这样做。但是,如果添加一个延续会让人难以阅读或让人困惑,那么我有一条很长的路。我不会为了指南而使代码更难阅读。

    【讨论】:

      【解决方案5】:

      没办法。

      ✔ 我的论点:

      • 超过 80 个字符的任何内容都是不太重要的逻辑的一部分。 (如果需要,人们可以向右滚动)
      • 执行此规则会使那些不重要的代码在我眼前变得混乱
      • 与偶尔水平滚动相比,必须始终垂直滚动很远的距离
      • 大多数现代编辑器都具有 soft-wrap 功能,可以针对任何长度限制(不仅仅是 80)选择自动执行此操作
      • 现代编辑器中的软换行是一种按键操作,这意味着如果行保持原样,则可以两全其美。

      Linus Torvalds' 参数:

      • grep 或“在文件中查找”将失败字符串在意外位置被切断。

      • 垂直限制(VT100终端)比80 char水平限制更痛苦

      ✔ 判决:

      It's like try-
      ing to read
      a news arti-
      cle written
      like this.
      

      【讨论】:

      • 感谢您的参考。我也分享了 Linus 的想法:“80 个字符造成了太多愚蠢的变化”。
      【解决方案6】:

      如果它是您的代码库,您可以做任何您想做的事情。如果是别人的,那么你必须按照他们的规则玩。例如,谷歌有 2 个字符缩进,但 PEP 8 说要使用 4 个空格。我相信他们是 Guido 引用的关于在白天使用 2 个空格缩进和在晚上使用 4 个空格进行编程的引用。

      即使使用宽屏显示器,我也喜欢字符限制,因为这样我就可以并排放置代码帧。

      代码风格实际上完全取决于个人喜好。重要的部分是一致性。所以无论如何都要写出让你开心的你的 python 代码。

      【讨论】:

      • 2 空格缩进是一种次要的混淆形式。
      • 而且4个空格缩进太浪费空间了。
      • 让我们确定 3 个空格的缩进,然后呢? :)
      【解决方案7】:

      只要您不必在宽显示器上水平滚动(因为我已经看到了)。

      【讨论】:

      • 任何体面的程序员编辑器都能够干净利落地处理偶尔出现的换行,而无需水平滚动。
      • IDE 对长线换行的决定可能比人为的决定更糟糕。
      【解决方案8】:

      与所有样式指南一样,它只是一个指南。你是否遵循它取决于你。主要目标是一致性。

      也就是说,出于以下原因,我建议采用约 80 个字符的限制。

      1. 它使复杂的代码更易于阅读。
      2. 现在就养成参与协作项目的习惯。
      3. 它显示了专业性。

      【讨论】:

      • “它显示了专业性。” ——你能扩展一下你的意思吗?我倾向于发现人们在希望别人做某事时会援引“专业主义”,但没有真正的理由为什么他们应该这样做。
      • 如果你看电影剧本,它们都遵循特定的格式。因此,当您遇到不遵循这种格式的脚本时,您会认为作者是业余爱好者。我以同样的方式查看代码。当我看到不遵循一些基本风格准则的代码时,我会自动假设编码器没有很多编码经验。因此,在这种情况下,我将“专业”定义为 1)您知道自己在做什么,以及 2)您了解一般的编码实践。
      【解决方案9】:

      PEP8 是为人类设计的,但即使你不遵循它,你的程序也会运行。

      如果您不共享代码并且不打算这样做,请随心所欲。

      如果您计划某天分享您的部分代码,那么您应该遵循 PEP8。我的意思是,如果几行是 85 个字符,可能没有人会关心。但如果代码的宽度始终超过 200 个字符,则代码将难以阅读。如果您曾经阅读过报纸,那么在使用列格式化文本时也会遇到同样的问题。

      行长问题的解决方案可能既不是使用连续字符任意换行,也不是通过将某些表达式括在括号内来使用隐式续行。可能是引入中间变量和函数,以使代码在逻辑上在少于 79 个字符时中断。

      顺便说一句,您可能想要坚持更严格的限制。我更喜欢 72 个字符,因为我可以在 80 个字符的文本邮件中允许一两个额外的引用级别。如果不这样做,标识将在第一次引用时中断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-10
        • 2012-07-13
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        • 1970-01-01
        相关资源
        最近更新 更多