Какой стиль строки в Ruby вам нравится?

Какой стиль строки в Ruby вам нравится? До сих пор я всегда использовал 'single quotes', если строка не содержит определенных escape-последовательностей или интерполяции, и в этом случае я, очевидно, должен использовать "double quotes".

Однако существует ли какая-либо причина не просто использовать строки с двойными кавычками во всем мире?

Ответ 1

Не используйте двойные кавычки, если вам нужно их избежать. И не попадайте в ловушку "одиночные против двойных кавычек". Ruby отлично поддерживает произвольные разделители для строковых литералов:

Зеркало сайта - https://web.archive.org/web/20160310224440/http://rors.org/2008/10/26/dont-escape-in-strings

Оригинальный сайт - http://rors.org/2008/10/26/dont-escape-in-strings

Ответ 2

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

Почему? Это выглядит лучше. Когда у вас есть тонна вещей на экране, множество одиночных кавычек дает вам меньше "визуального беспорядка", чем много двойных кавычек.

Я хотел бы отметить, что это не то, что я намеренно решил сделать, просто то, что я "развивал" со временем, пытаясь добиться более красивого кода.

Иногда я буду использовать% q или% Q, если мне нужны встроенные кавычки. Я только когда-либо использовал heredocs, возможно, один или два раза.

Ответ 3

Как и многие программисты, я стараюсь быть настолько конкретным, насколько это практично. Это означает, что я пытаюсь заставить компилятор сделать как можно меньше работы, чтобы мой код был как можно более простым. Поэтому для строк я использую самый простой метод, который достаточно для моих нужд для этой строки.

<<END
For strings containing multiple newlines, 
particularly when the string is going to
be output to the screen (and thus formatting
matters), I use heredocs.
END

%q[Because I strongly dislike backslash quoting when unnecessary, I use %Q or %q
for strings containing ' or " characters (usually with square braces, because they
happen to be the easiest to type and least likely to appear in the text inside).]

"For strings needing interpretation, I use %s."%['double quotes']

'For the most common case, needing none of the above, I use single quotes.'

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

Ответ 4

Я использую одинарные кавычки, если мне не нужна интерполяция. Аргумент о том, что это хлопотно изменить позже, когда вам нужно интерполировать колебания в другом направлении, тоже: вам нужно перейти от двойного к одиночному, когда вы обнаружили, что в вашей строке было # или а \, что вызвало бегство, t намеревается.

Преимущество по умолчанию для одинарных кавычек состоит в том, что в кодовой базе, которая принимает это соглашение, тип котировки действует как визуальный сигнал о том, следует ли ожидать интерполированных выражений или нет. Это еще более заметно, когда ваш редактор или IDE выделяет два типа строк по-разному.

Я использую синтаксис% {.....} для многострочных строк.

Ответ 5

Обычно я использую двойные кавычки, если мне не нужно отключать экранирование/интерполяцию.

Ответ 6

Я вижу аргументы для обоих:

Для использования в основном двойных кавычек:

enter image description here

  • Легче искать строку foobar, ища "foobar", если вы согласны с цитированием. Однако я не. Поэтому я ищу [']] foobar [' "] включение регулярных выражений.

Для использования некоторой комбинации одиночных двойных кавычек:

  • Знайте, нужно ли искать интерполяцию строк.
  • Возможно, будет немного быстрее (хотя этого было недостаточно, чтобы повлиять на руководство по стилю github).

Ответ 7

Я использовал одиночные кавычки, пока не понял, что мне нужна интерполяция. Затем я обнаружил, что трачу много времени, когда возвращаюсь назад, и мне нужно сменить отдельные кавычки на двойные кавычки. Тестирование производительности не показало заметного влияния скорости использования двойных кавычек, поэтому я всегда рекомендую использовать двойные кавычки.

Единственным исключением является использование sub/gsub с обратными ссылками в заменяющей строке. Затем вы должны использовать одинарные кавычки, так как это проще.

mystring.gsub( /(fo+)bar/, '\1baz' )
mystring.gsub( /(fo+)bar/, "\\1baz" )

Ответ 8

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

Однако, я только что узнал произвольный трюк с разделителем от Дэяна, и я думаю, что это здорово. =)