0

哪个更好?

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. 的符号?

4

2 回答 2

3

请注意,它不仅与符号有关,还与新旧哈希语法有关。

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

{ width: 42, height: 24 }

但它看起来很可怕的符号:

... class: :button ...

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

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

这更好,因为:class符号的写法与:button符号相似。符号应该以相同的语法写在一行中。

于 2012-06-13T18:32:25.280 回答
2
  1. 适用于 Ruby 1.8 和 1.9。

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

  3. 仅适用于 1.9。:button并且:green速度更快(略微),代价是代码描述其意图更差。

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

于 2012-06-13T18:24:21.547 回答