2013-06-19 33 views
3

以下红宝石样式指南(https://github.com/bbatsov/ruby-style-guide)指出以下:Ruby on Rails的样式准则,围绕方法括号参数

  • 省略括号周围参数对于那些内部DSL的一部分的方法(例如耙,导轨, RSpec),在Ruby中具有“关键字”状态的方法(例如attr_reader,puts)和属性访问方法。围绕所有其他方法调用的参数使用括号。

我曾经经历过什么是Rails内部DSL的一部分的争论。有人可以回答哪些方法是Rails内部DSL的一部分?它包括如link_toI18n.t的方法吗?哪些方法不是Rails内部DSL的一部分?

回答

0

注意风格指南是纯粹的意见,例如,您提到的link_to方法,我认为包括括号在内是更加清晰的,但这纯粹是我的看法。 Rails DSL非常广泛,并且包含您提到的方法。您可以查看api以获取完整列表。

1

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

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

我会说,让我们来看看的link_to“应该”有括号(再次,不是说有一个正确的答案)。较系统的研究可以做,但我瞟了一眼几件事情:

  • Rails的指南做使用的括号,*的link_to *,至少不是我看了看(参见,例如部分, http://guides.rubyonrails.org/layouts_and_rendering.html
  • 我看了从GitHub上thoughtbotpivotal的几个项目。我从每个项目中随机选择一个Rails项目,然后搜索该存储库中的* link_to *。 thinkbot项目是100%没有parens。关键是14比1没有parens。

所以这个非常轶事的“数据”,我会说没有parens去。也许这意味着* link_to *是“内部DSL”的一部分。如果是这样,那么可能至少应该考虑在视图中使用的内置方法(路径/ URL助手,表单助手等)。

1

一个指导我阅读,我很喜欢,认为这是确定省略圆括号如果简单或清晰的方法,但使用它,如果读者或编译器无法轻松识别参数或参数组。遗漏的原因是减少混乱,增强可读性,但不会损失清晰度。