使用符号的最佳方法是什么?

时间:2012-06-13 18:19:45

标签: ruby-on-rails ruby symbols

哪个更好?

1

= link_to "Page", "/page", :class => "button", :data => {:theme => "green", :icon => "small-arrow"}

2

= link_to "Page", "/page", class: "button", data: {theme: "green", icon: "small-arrow"}

3

= link_to "Page", "/page", class: :button, data: {theme: :green, icon: "small-arrow"}

我发现符号是最好的使用方法,因为符号和字符串之间的内存分配差异。

我发现版本2.更具可读性(对我来说)并且我认为也更易于维护,因为在字符串中查看/编辑/添加单独的单词(通过空格或破折号)更容易/更快,而不是编辑符号和将其转换为字符串(如果需要,例如添加第二个类“按钮登录”或其他主题“深红色”)。

是否有任何严重的原因(例如表演)使用1.或3.而不是2的符号。?

2 个答案:

答案 0 :(得分:3)

请注意,它不仅仅是关于符号,而是关于旧的和新的哈希语法。

我不喜欢将新的哈希语法与符号混合使用。在大多数情况下,新语法看起来很好,例如:

{ width: 42, height: 24 }

但用符号看起来很可怕:

... class: :button ...

在我看来,它很奇怪而且不是人类可读的。我不喜欢第三种选择。所以,我更喜欢这个选项(你没有提到它):

= link_to "Page", "/page", :class => :button, 
   :data => { :theme => :green, :icon => "small-arrow" }

这样做比较好,因为:class符号与:button符号类似。符号应该在一行中以相同的语法编写。

答案 1 :(得分:2)

  1. 适用于Ruby 1.8和1.9。

  2. 仅适用于1.9。 "button""green"不存储在堆上,并且是可变的,但是,它们准确地表明它们的价值是重要的。

  3. 仅适用于1.9。 :button:green更快(略有),代价是更难描述其意图的代码。

  4. 换句话说,就哈希语法而言,2和3是相同的。对于字符串与符号的正确使用,1和2是相同的。