3

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

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

我经历过关于什么是 Rails 内部 DSL 的一部分的争论。有人可以回答什么方法是 Rails 内部 DSL 的一部分吗?它是否包括类似link_toor的方法I18n.t?哪些方法不是 Rails 内部 DSL 的一部分?

4

3 回答 3

1

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

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

我想说,让我们看看 link_to “应该”是否有括号(同样,不是说有一个正确的答案)。可以进行更系统的研究,但我浏览了一些东西:

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

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

于 2013-06-19T17:42:04.333 回答
1

我阅读的一条我喜欢的指南建议,如果方法简单或清晰,可以省略括号,但如果读者或编译器无法轻松识别参数或参数组,则使用它。省略的原因是减少混乱并提高可读性,但不以失去清晰度为代价。

于 2013-06-19T17:42:32.257 回答
0

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

于 2013-06-19T17:34:06.217 回答