3

为什么 Rubocop /社区驱动的 Ruby 风格指南建议在方法定义中使用括号?

def my_method(param1, param2)
end
# instead of
def my_method param1, param2
end

根据情况,方法调用可以带括号也可以不带括号。但是,我的第一印象是,方法调用中缺少括号比方法定义中缺少括号更容易产生歧义。它背后是否有原因,例如让代码更简单,还是因为“历史原因”或“因为它是最普遍的风格”而发生?

澄清:

我不是在征求关于哪种风格更容易阅读的意见。

lintLint/AmbiguousOperator基于do_something *some_array模棱两可的想法和错误的来源(链接)。Style/MethodDefParentheses我想知道(链接)是否也是如此。

在回去找到那些警察的实际名字后,我现在最好的猜测是没有“技术”原因,而是一个是适当的“棉绒”,另一个是“风格”问题。

4

1 回答 1

3

在最初的提交中省略了基本原理,该规则是其中的一部分,表明它没有特定的技术原因。

相应的警察被安置在Style部门,而不是Lint,这一事实进一步证明了这只是一个风格问题。

方法定义的语法非常简单。def关键字(可选)后跟参数,参数后面必须跟一个终止符(换行符或);

可能的变化是:

  • 单行方法定义,
  • 内联修饰符,例如private
  • 默认和关键字参数,
  • splat 和块参数。

所有这些在有和没有括号的情况下都可以正常工作。此外,使用该标志运行具有未加括号的方法定义的文件-w不会引发任何警告。

这些因素共同排除了建议使用括号以避免歧义的可能性。

于 2018-02-15T09:22:40.583 回答