【问题标题】:What is a line length "soft limit" and how do I interpret this in the PSR-2 convention?什么是行长“软限制”,我如何在 PSR-2 约定中解释这一点?
【发布时间】:2013-02-04 10:33:30
【问题描述】:

我不明白这部分 php 的 PSR-2 约定:

行长的软限制必须是 120 个字符;自动样式检查器必须发出警告,但不得在软限制处出错。

不应超过 80 个字符;超过该长度的行应该拆分为多个后续行,每行不超过 80 个字符。

我认为“软限制”的意思是“尽量坚持这个限制,但额外的几个字符不是问题”。但是后来我读了第二行,现在我不明白了。

【问题讨论】:

  • 见文档顶部MUSTMUST NOTSHOULD的描述(另见:RFC 2119)。
  • 忽略行长部分,它们是废话且毫无意义,并且经常拆分行,尤其是中间函数/正则表达式等,只会使其更难阅读。我对规则的主要误解是关于 {} 定位的 2 行。当人们将它放在不同的行而不是与函数或方法声明行等相同的行时,我讨厌讨厌它,你最终会在整个地方流浪 { 并且它成为追踪它们的噩梦。更不用说额外添加的空格会导致文件过度膨胀
  • @igorw 我的解释是这样的,对我来说没有多大意义:“行最多应为 80 个字符,但如果必须的话,你可以超过这个限制。但话又说回来了另一个限制为 120,您不得超过,但如果必须,您可以(因为您必须尊重它,但这是一个软限制)。”
  • @GarethL 但第一个是软的
  • 我已经为您改写了这两行:PSR-2 中指定的行长度没有硬性限制。一般建议将行数保持在 80 个字符以内,并且自动样式检查器必须警告您注意 120 个字符的软限制。

标签: php coding-style conventions


【解决方案1】:

这很简单:

  • 0-80:总是好的
  • 80-120:可接受(如果有充分的理由,例如,包裹它的字符串会很难看)
  • 120+:Lint 工具、IDE 等必须显示警告(但绝不是错误!),因为该行可能很难看/不可读/...

【讨论】:

  • 所以...简而言之,使用“软包装”这个词没有任何意义,因为它必须在用法旁边定义软包装的含义?因为这里没有答案确实解释了软包装的含义(软包装:IDE = 警告,硬包装:IDE = 代码格式的换行符?)
【解决方案2】:

PSR-2 中没有硬性限制

MUST (NOT) 指的是自动样式检查器,而不是作为程序员的您。

另请注意,当超出软限制时应发出no error 部分。

【讨论】:

    【解决方案3】:

    让我在上面的答案中添加一些内容

    编辑器设置

    我也在阅读无花果标准,我偶然发现了同样的问题。

    在深入了解我的 IDE 设置 (PhpStorm) 后,我在常规“代码样式”页面下方发现了一个小注释,您不会在 php 代码部分看到该注释。

    笔记报告:

    "指定一个指南 (80) 或多个 (80, 120)"

    这样可以更好地解释 PSR 规则,我现在是这样阅读的:

    "你不应该写超过 80 个字符的行,但是你可以 如果你需要。如果超过 80 个字符,无论如何都要避免 行长于 120 个字符”。

    如果您有两个垂直标尺,这是完全可能的:将它们设置为 80, 120,您将知道何时超过第一个限制(警告),以及何时超过第二个限制(停下!)。

    如果您使用自动代码格式化(我这样做,但人们讨厌我),那么您可以在 php 代码样式页面中设置 Hard wrap at: 120。此设置将确保遵循 PSR 规则。

    个人强项

    说实话,现在我们的显示器比旧款显示器WIDER很多,因为它们使用 16:9 的纵横比而不是 4:3。所以我不认为遵循 120 个字符规则的紧迫性,因为 16:9 显示器可以轻松处理一行 200 多个字符(我在屏幕上打印了 224 个字符)。

    无论如何,我不喜欢打破规则的想法,如果可以的话,我会在谈到编码标准时尝试遵循它们。 也许我看不出规则的意义,但如果整个团队都在讨论这个话题,并决定将限制设置为 120 个字符,那么这个决定背后可能有我看不到的原因,所以我只是坚持下去。这就是标准对我的意义。

    为什么 120 是一个很好的折衷方案

    事实上,在过去的几周里,我已经开始垂直拆分编辑器的窗口,将一些文件类型保留在左侧,而将其他一些类型(通常是 JavaScript)保留在右侧。一开始可能有点奇怪,我是那种对错位的东西非常不安的人。但现在我已经习惯了,因为在实践中,它会更好地工作!

    我在某处读到过,我们的视线不能很好地跟上超过一定长度的线条,您可以很容易地理解原因。尝试阅读行数超过 200 行的文档,您会更容易失去焦点。可能你会多次忽略这一点并重新阅读整行......如果你能找到它的开始!

    最大长度在 80 到 120 之间的文档将有更多行,但可读性更高,并且您也可以在大多数情况下水平拆分屏幕,而无需滚动。

    我只是想说一下我在 PhpStorm 上的发现,和往常一样我最终写了一张纸莎草纸。我很抱歉 :)

    【讨论】:

      【解决方案4】:

      我很确定我在某处看到了另一种解释……我不知道这是不是真的,但我觉得我应该分享一下 =)

      好的,就是这样:任何行都不能超过 80,但这不考虑缩进。使用缩进,限制为 120。

      因此,如果您当前的缩进是 80(考虑“守卫”,顺便说一句……) - 您只剩下 40 个字符。但是,如果您当前的缩进是 40 或更少——实际代码最多可以使用 80 个字符。

      【讨论】:

        【解决方案5】:

        理解所有FIG标准的关键是正确解释key words used in RFCs

        不得对行长度有硬性限制。

        虽然没有人会拿枪指着你的头……

        对行长度的软限制必须为 120 个字符。

        ……最好不要超过120个字符……

        不应超过 80 个字符;超过该长度的行应拆分为多个后续行,每行不超过 80 个字符。

        ...但是,作为建议,尝试拆分长度超过 80 个字符的行。


        这一切都归结为可读性。针对数字文本的易读性研究表明,与印刷文本一样,行长会影响阅读速度 (saccade)。此外,事实证明,当跳到下一行时,潜意识是充满活力的(只要它不经常发生)。在每一行的开头,读者都会集中注意力,但随着行的持续时间,这种注意力会逐渐消失(“Typographie”,E. Ruder)。

        【讨论】:

          猜你喜欢
          • 2014-05-24
          • 2022-01-08
          • 1970-01-01
          • 1970-01-01
          • 2022-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多