为什么 Rubocop 默认指南建议在方法定义中使用括号?
Why does the Rubocop default guidelines recommend parentheses in method definitions?
为什么 Rubocop / community-driven Ruby style guide 建议在方法定义中使用括号?
def my_method(param1, param2)
end
# instead of
def my_method param1, param2
end
方法调用可以带括号也可以不带括号,视情况而定。但是,我的第一印象是,在方法调用中缺少括号比在方法定义中缺少括号更可能 模棱两可。背后是否有原因,例如使代码更简单,还是因为 "historical reasons" 或 "because it was the most widespread style"?
澄清:
我不是征求关于哪种风格更容易阅读的意见。
lint Lint/AmbiguousOperator
基于这样的想法,即 do_something *some_array
是模棱两可的,并且是错误的来源 (Link). I wondered if this is the same case for Style/MethodDefParentheses
(Link)。
回去查了那些警察的真实姓名后,我现在最好的猜测是没有 "technical" 原因,而是一个是正确的 "lint",另一个是 "style"事.
在 initial commit 中省略了基本原理,该规则是其中的一部分,表明它没有特殊的技术原因。
事实上,相应的警察被安置在 Style
部门,而不是 Lint
,进一步证明这只是风格问题。
方法定义的语法非常简单。 def
关键字(可选)后跟参数,参数后必须跟终止符(换行符或 ;
)。
可能的变化是:
- 单行方法定义,
- 内联修饰符,例如
private
,
- 默认和关键字参数,
- splat- 和块参数。
无论有没有括号,所有这些都可以正常工作。此外,运行 具有使用 -w
标志的未加括号的方法定义的文件不会引发警告。
这些因素一起排除了建议使用括号以避免歧义的可能性。
为什么 Rubocop / community-driven Ruby style guide 建议在方法定义中使用括号?
def my_method(param1, param2)
end
# instead of
def my_method param1, param2
end
方法调用可以带括号也可以不带括号,视情况而定。但是,我的第一印象是,在方法调用中缺少括号比在方法定义中缺少括号更可能 模棱两可。背后是否有原因,例如使代码更简单,还是因为 "historical reasons" 或 "because it was the most widespread style"?
澄清:
我不是征求关于哪种风格更容易阅读的意见。
lint Lint/AmbiguousOperator
基于这样的想法,即 do_something *some_array
是模棱两可的,并且是错误的来源 (Link). I wondered if this is the same case for Style/MethodDefParentheses
(Link)。
回去查了那些警察的真实姓名后,我现在最好的猜测是没有 "technical" 原因,而是一个是正确的 "lint",另一个是 "style"事.
在 initial commit 中省略了基本原理,该规则是其中的一部分,表明它没有特殊的技术原因。
事实上,相应的警察被安置在 Style
部门,而不是 Lint
,进一步证明这只是风格问题。
方法定义的语法非常简单。 def
关键字(可选)后跟参数,参数后必须跟终止符(换行符或 ;
)。
可能的变化是:
- 单行方法定义,
- 内联修饰符,例如
private
, - 默认和关键字参数,
- splat- 和块参数。
无论有没有括号,所有这些都可以正常工作。此外,运行 具有使用 -w
标志的未加括号的方法定义的文件不会引发警告。
这些因素一起排除了建议使用括号以避免歧义的可能性。