【问题标题】:Why do many linters warn when using comma operators to write terse code? [closed]为什么用逗号写测试代码的时候很多升? [关闭]
【发布时间】:2020-11-17 02:16:52
【问题描述】:

我想知道为什么默认情况下以下代码对 CRA(和许多其他)js linter(s) 有问题。我在这里看到的是简洁易读的代码行。我的猜测是因为下面的一个班轮不是很可扩展。有时,小块简单的代码无论如何都不需要(不应该)变得更大。还有什么其他原因可以避免编写这样简单的单行代码?

doSomething( prev => (prev.searchField = val, { ...prev }) );

我真的需要这样做来让 linter 开心还是有其他方法可以保持上述单线?

doSomething(prev => {
  prev.searchField = val;
  return { ...prev };
});

为了保持简洁,让我们不要争论什么更具可读性,请回答为什么你认为 linter 会用 Unexpected use of comma operator no-sequences 警告这种类型的代码。

【问题讨论】:

  • 因为有人制定了规则。通常这些会强制执行更多代码以防止拼写错误。
  • linter 所做的几乎所有事情都是见仁见智。
  • @Pointy 除非是 jslint 然后是福音 ????
  • “让我们不要讨论什么更具可读性,请回答为什么你认为 linter 会警告这种类型的代码”不会说为什么我认为 linter 警告这种类型的代码会引起争论吗?跨度>
  • 虽然“可读”是主观的,但“可读”和“紧凑”并不经常一起出现。无论哪种方式,doSomething(prev => ({...prev, searchField: val})) 都达到了相同的效果,并且更常用。

标签: javascript reactjs linter


【解决方案1】:

ESLint 规则非常可定制,允许有特定准则的团队自定义警告和 linting,这样他们就可以开始使用该工具,而无需编辑所有以前的代码。

但是,CRA 和其他一些人提供了推荐的 linter 设置,这些设置通常是“最佳实践”,也可以防止初学者犯错误。

尽管您可能认为简单的一行是可读的,但对很多人来说并非如此,因此no-sequences 规则是您碰巧使用的预选规则集的一部分。

如果您不同意这些建议,则可以轻松将其关闭。

no-sequences rule in EsLint docs

【讨论】:

  • 谢谢!这就是我一直在寻找的。这个问题因为基于意见而被关闭,尽管我非常努力地用词来获得像你这样的答案。
  • 是的,一切都是意见,StackOverflow 有时会让它变得困难。我个人鄙视逗号操作符,但如果你的代码中有大量的逗号操作符,那么 ESlint 的可组合性很好,所以请随意禁用它。一般来说,尽管我会尝试坚持这些建议,但前提是对于习惯于成为 JS 的稍微标准化的子集的新手来说更容易。另外,我认为如果是:doSomething(prev => ({...prev, searchField: val}))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
相关资源
最近更新 更多