【问题标题】:ESLint: disallow empty lines inside function bodyESLint:不允许函数体内有空行
【发布时间】:2022-01-05 00:01:53
【问题描述】:

我坚信函数体内的空行是代码异味,表明我们需要执行重构以将函数分开。

但在 ESLint 中的现有规则(no-multiple-empty-lines/lines-between-class-members 等)中,包括流行插件中出现的规则,我找不到可以限制我在里面使用空行的规则函数体。有没有人遇到过这个问题?

这很糟糕:

function add(a, b) {
  const result = a + b;

  return result;
}

const multiply = (a, b) => {
  const result = a * b;

  return result;
}

这很好:

function add(a, b) {
  const result = a + b;
  return result;
}

const multiply = (a, b) => {
  const result = a * b;
  return result;
}

【问题讨论】:

  • 这是一个非常奇怪的观点,尤其是坚信这一点,所以你可能需要编写自己的插件来解决这个问题。
  • 好的,请您详细说明一下,这里到底有什么奇怪的地方?
  • 坚信函数中不应该存在空格是奇怪的。空白在可读性中起着非常重要的作用,所以不允许它是很奇怪的。 ESLint 插件可满足所有常见需求,但这一点也不常见,因此您可能需要编写自己的插件。
  • 查看我对 doberkofler 答案的评论。我简要描述了为什么空格是一种代码味道。
  • 总是有这么多不同的用例,但我绝对不会在 JavaScript 中将 white spaces 称为 code smell ;-)

标签: javascript typescript eslint


【解决方案1】:

我个人坚信空行对于使代码更具可读性至关重要。 不管怎样:你检查过padding-line-between-statements 规则吗?

如果您的目标是防止复杂功能,请使用max-lines-per-functioncomplexity

【讨论】:

  • 是的,我做到了。我只需要在函数体内禁止空行,其他任何地方都不需要。
  • 我仍然认为这是一个坏主意,我很确定 eslint 中没有这样的规则。我想很难说服 eslint 团队添加这样的规则,但您始终可以创建自己的自定义规则。
  • 好吧,这不是本题的主要话题,但我会简单解释一下。开发人员使用空行来分隔代码块。功能完全相同。如果开发人员继续添加新的代码块,用空行分隔它们,我们最终会拥有怪物功能。这是没有经验的开发人员的典型错误。
  • “功能完全一样。”不,一个函数为代码块指定一个特定的名称并将其提取出来,以便可以从多个位置引用和重用它。
  • 我根据您的反馈编辑了我的答案。如果您的目标是防止函数变得太大,您应该使用规则max-lines-per-functioncomplexity
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 2022-01-01
  • 2016-11-26
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
相关资源
最近更新 更多