2012-06-13 1 views
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"} 

я узнал, что символы являются наилучшим способом использовать из-за разницы в alocation памяти между символы и строки.

Я нахожу версию 2. как более удобочитаемую (для меня), и я думаю, что она более удобна в обслуживании, потому что проще/быстрее видеть/редактировать/добавлять отдельные отдельные слова (пробелом или тире) внутри строки, а не редактировать символ и преобразовать его в строку (при необходимости, например, добавить второй ключ «кнопка входа в систему» ​​или другая тема «темно-красный», например).

Есть ли серьезная причина (например, производительность) использовать обозначения от 1. или 3., а не 2.?

+2

Здесь действительно два вопроса: хеш-хеш-хет хеш-синтаксис и символы против строк. –

+0

@AndrewMarshall Да, это может быть (я не очень опытен в Ruby). Но я пытаюсь найти любую хорошую причину, почему стиль кода лучше по сравнению с другим. И я также сказал, какая версия, которую я предпочитаю, выглядит более удобочитаемым для человека. –

+0

Стиль кода субъективен. Некоторые люди предпочитают хеш-ракеты, в то время как другим нравится стиль 'json'. [Ruby 1.8 - устаревшее программное обеспечение] (http: //www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7 /), поэтому тот факт, что он не поддерживает «новый» хэш-синтаксис, не имеет значения. –

ответ

3

Обратите внимание, что речь идет не только о символах, это о старом и новом синтаксисе хэша.

Мне не нравится смешивать новый синтаксис хэша с символами. Новый синтаксис выглядит хорошо в большинстве случаев, например:

{ width: 42, height: 24 } 

Но это выглядит ужасно с символами:

... class: :button ... 

Это странно и не читаемым человеком, на мой взгляд. Мне не нравится третий вариант. Поэтому я предпочитаю этот вариант (вы не упомянули его):

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

Это лучше, потому что :class символ записывается похож на :button символ. Символы должны быть написаны в одном синтаксисе в одной строке.

+0

Я согласен, что-то => «Что-то еще» - мой предпочтительный метод при программировании. Кажется, легче читать, и он не отстает от того, как большинство символов Rails написано в моделях и контроллерах. –

+1

@ de_an777 Не в Rails 4. David Heinemeier Hansson является поклонником нового синтаксиса, и он уже включен в генераторы. В том числе в менее предпочтительной форме 'foo:: bar'. Можете также привыкнуть к нему ИМО. – coreyward

+0

@coreyward О, хорошо круто. Не знал этого, тогда я обязательно начну использовать его. Я предполагаю, что я просто привык использовать этот синтаксис, но если они начнут включать его больше, меньше кода для них и для меня. Не могу дождаться Rails 4. –

2
  1. Работы в Ruby 1.8, а также 1.9.

  2. Работает только в 1.9. "button" и "green" не сохраняются в куче и изменяются, однако они точно передают то, что важно для них.

  3. Работает только в 1.9. :button и :green быстрее (незначительно), за счет кода, который более плохо описывает его намерение.

Другими словами, 2 и 3 являются одинаковыми с точки зрения синтаксиса хеширования. 1 и 2 одинаковы с точки зрения правильного использования строк и символов.

+1

Я считаю, что символы будут быстрее, если они уже были использованы. Если это первое (и единственное) время, то нет никакого преимущества. –

+0

Да, все они работают, но я предпочитаю использовать версию 2 более 1 или 3, потому что она описывает намерение (как вы сказали), и я нахожу его более удобным для обслуживания, когда вы меняете значения каждого хеша, более читабельны. –

+0

@AndrewMarshall Символ: кнопка, например. можно использовать много, но это не так быстро, когда вам нужно редактировать (строка против символа), когда вы хотите добавить другие слова, которые разделены (пробелом или тире). А также не так читаемо. –

 Смежные вопросы

  • Нет связанных вопросов^_^