【问题标题】:Why care about trailing commas in Node.js?为什么要关心 Node.js 中的尾随逗号?
【发布时间】:2021-02-15 06:53:07
【问题描述】:

在大多数 Node.js 库中,人们会特别注意删除最后一对对象的键属性后的尾随逗号:

var test = {
    key1: 123,
    key2: 456,
    key3: 789
};

这会在编辑代码时产生一些麻烦,例如要交换最后两个键值对,还必须添加一个逗号并删除一个。有些人将逗号移到下一行,这解决了最后一个元素的问题,但也使代码更难阅读(恕我直言):

var test = {
      key1: 123
    , key2: 456
    , key3: 789
};

另一方面,据我所知,JavaScript 中的尾随逗号只会在某些 IE 浏览器中产生问题。所以我想知道是否有任何 技术 理由不在 Node.js 中使用尾随逗号编写散列? (如下所示:)

var test = {
    key1: 123,
    key2: 456,
    key3: 789,        
};

【问题讨论】:

  • 此时唯一重要的地方是节点需要实际 JSON 的地方。例如,在 package.json 中,不能有尾随逗号。
  • 有逗号,所以当你使用咖啡脚本时,省略它们会更快乐
  • 请注意,Node.js node.green/#ES2017-features-trailing-commas-in-function-syntax

标签: javascript node.js


【解决方案1】:

不,没有技术上的理由这样做。

但是,我从来没有仅仅因为我认为它可以使代码更清晰而使用尾随逗号。可能有些人也有来自 web 开发的习惯,就像你提到的,你需要小心那些因为 IE。

编辑:这个答案在 2012 年是有道理的,但今天,随着主要浏览器的支持和旧版浏览器的 Babel 等工具,我认为尾随逗号应该是每个人的默认设置。好处是它使添加新行更容易,并且相关的 Git diff 更清晰。

【讨论】:

  • 补充一点,它在您的代码中显示了一些专注,我们不是为编译器编写代码,而是为其他程序员,主要是我们自己编写代码。树立一个好榜样。
  • 有很多技术原因,它被称为未来证明您的代码可以在新版本的 ES 上运行,其中尾随逗号是语法错误
  • @Raynos 你有很好的来源吗?我发现矛盾的东西。 LegalIllegalLegal
  • @Xeon06 哦,ES5 规范确实说它是合法的。那我错了
  • 看到这种情绪很有趣。我总是觉得尾随逗号的缺少很难看。
【解决方案2】:

更新:我已经改变了对此的立场。我认为尾随逗号很棒,因为您不必更改两行即可添加属性,并且差异仅显示添加的行。

旧与错:

我找到了一个不使用尾随逗号的好理由但这并不特定于 node.js

From Johan Sundström:

这种格式的好处是差异友好:添加或删除 属性或数组成员几乎从不接触任何其他行,但 一个实际发生变化的地方,而尾随逗号语法 几乎总是接触两行以使逗号正确。

相反,更改后的行将永远不会有任何不相关的内容, 这有助于在视觉上极大地扫描提交。

【讨论】:

  • 这不是错误的方式吗?我想说有一个尾随逗号 more 差异友好,因为您不必编辑前一行来添加一个新的(在最后)。它还使复制和意大利面变得更容易:)
  • @grahamrhay 如果您必须在最后一行之后添加一行,除非您不符合 JSON 标准,否则您仍然必须添加逗号 :) 自从我发布了这个,我从那以后,我决定我更喜欢前导逗号,因为它使我、python 开发人员、ruby 开发人员和其他人都能阅读我的代码。对我来说,这只是值得 diff 的好处。
  • @grahamrhay 你的观点很好。我已经开始按照你的方式看待事情了。尾随逗号ftw。
【解决方案3】:

它可能不会改善您的运行时间或类似情况,但您可以使用与版本控制相关的尾随逗号。

如果不使用,git会检测到修改了一行,又增加了一行。但是如果你使用它,git会检测到只添加了一行:

使用尾随逗号:

没有使用尾随逗号:

【讨论】:

    【解决方案4】:

    首先,我认为尾随逗号很难看,所以我只在必要时使用它们(python 元组只有一个元素) - 前导逗号更难看。

    除此之外,永远不要使用它们是有原因的:如果您编写的代码是用于 node.js 或客户端(很可能是不喜欢它们的 IE),则不必小心。

    在 node.js 中省略它们没有技术原因。

    【讨论】:

      【解决方案5】:

      我非常喜欢对象中按字母排序的键。这有很多优点。第一个是两个相似对象的视觉比较。所有为 JavaScript 提供调试支持的现代 IDE(我见过)对属性进行 alpha 排序。因此,当您将断点处的对象与您的代码进行比较时,它只会变得更容易。

      在对象中的最后一个对的尾随逗号可以很容易地对对象中的对进行排序:选择所有行并在编辑器中点击排序键。如果最后一对不再是最后一对,则无需进一步添加/删除逗号。

      我同意所有其他 cmets(起初)它使您的代码“不干净”或更丑陋。我发现在使用尾随逗号后我很快就习惯了,几周后我开始更喜欢这样看。

      作为人类,我们对我们习惯的东西感到最舒服。鉴于我们看到的大多数代码都没有尾随逗号,这是我们最喜欢的。使用逗号结尾的几周后,您可能会发现自己更喜欢那个。而且您可能会发现它更实用。

      【讨论】:

        猜你喜欢
        • 2021-11-20
        • 2012-07-20
        • 2014-01-30
        • 1970-01-01
        • 2019-02-12
        • 2014-11-09
        • 1970-01-01
        • 2018-01-10
        相关资源
        最近更新 更多