Ruby on Rails样式指南,围绕方法参数的括号

时间:2013-06-19 17:12:11

标签: ruby-on-rails ruby coding-style

以下红宝石样式指南(https://github.com/bbatsov/ruby-style-guide)声明如下:

  • 忽略作为内部DSL(例如Rake,Rails,RSpec)一部分的方法的参数的括号,在Ruby中具有“关键字”状态的方法(例如attr_reader,puts)和属性访问方法。在所有其他方法调用的参数周围使用括号。

我经历过关于Rails内部DSL的一部分的争论。有人可以回答哪些方法是Rails内部DSL的一部分?它是否包含link_toI18n.t等方法?什么方法不属于Rails内部DSL?

3 个答案:

答案 0 :(得分:1)

您引用的指南对此可能存在歧义。它没有定义“内部DSL”的含义。那么你应该如何解决这个问题?

首先,我要说在这种情况下保持一致比你选择的答案更重要。

我会说,让我们看看link_to是否应该“parens”(再次,并不是说有一个正确的答案)。可以进行更系统的研究,但我瞥了几件事:

  • Rails指南使用带有* link_to *的parens,至少不是我查看过的部分(例如,参见http://guides.rubyonrails.org/layouts_and_rendering.html
  • 我在github上浏览了thoughtbotpivotal的一些项目。我从每个项目中随机选择了一个Rails项目,然后在该存储库中搜索* link_to *。思想机器人项目是100%没有parens。关键是14比1没有parens。

因此,有了这个高度轶事的“数据”,我会说没有任何事情。也许这意味着* link_to *是“内部DSL”的一部分。如果是这样,那么可能至少,您在视图中使用的内置方法(路径/ URL帮助器,表单助手等)也应该被认为是这样。

答案 1 :(得分:1)

我读过的指南,我喜欢,建议如果方法简单或明确,可省略方法的括号,但如果读者或编译器无法轻易识别参数或参数分组,则使用它。遗漏的原因是减少混乱并提高可读性,但不以牺牲清晰度为代价。

答案 2 :(得分:0)

注意到样式指南纯属意见,例如,对于你提到的link_to方法,我认为包括括号更清晰,但这纯粹是我的意见。 Rails DSL非常广泛,包括您提到的方法。您可以查看api以获取完整列表。