您喜欢哪种样式的Ruby字符串引用?

Joh*_*ley 46 ruby string

您喜欢哪种样式的Ruby字符串引用?到目前为止,我总是使用'single quotes'除非字符串包含某些转义序列或插值,在这种情况下我显然必须使用"double quotes".

但是,有没有理由不在任何地方使用双引号字符串?

Dej*_*mic 47

如果你不得不逃避它们,请不要使用双引号.并且不要陷入"单一双引号"陷阱.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


Ori*_*rds 31

除非我需要插值,否则我总是使用单引号.

为什么?它看起来更好.当你在屏幕上有大量的东西时,很多单引号会比很多双引号给你更少的"视觉混乱".

我想要注意的是,这并不是我故意决定做的事情,而是我试图获得更好看的代码时我已经'进化'的东西.

如果我需要内嵌引号,偶尔我会使用%q或%Q. 我曾经只使用过一次或两次heredocs.


Myr*_*rys 27

像许多程序员一样,我试着尽可能具体.这意味着我尽量使代码尽可能简单,使编译器尽可能少地工作.所以对于字符串,我使用最简单的方法来满足我对该字符串的需求.

<<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.'
Run Code Online (Sandbox Code Playgroud)

我对程序提供的语法高亮质量的第一个简单测试是看它如何处理所有引用方法.


Pis*_*tos 11

我使用单引号,除非我需要插值.关于稍后当你需要在另一个方向上进行插值时更改很麻烦的争论:当你发现你的字符串中有一个#或一个\导致你没有逃脱时,你必须从双变为单.打算.

默认为单引号的优点在于,在采用此约定的代码库中,引用类型充当关于是否期望插值表达式的视觉提示.当您的编辑器或IDE以不同方式突出显示两种字符串类型时,这一点就更加明显了.

我对多行字符串使用%{.....}语法.


Tod*_*lin 8

我通常使用双引号,除非我特别需要禁用转义/插值.


jus*_*don 6

我看到两者的论点:

主要使用双引号:

在此输入图像描述

  • 如果你与引用一致,通过搜索"foobar"来搜索字符串foobar会更容易.但是,我不是.所以我搜索['"] foobar ['"]打开正则表达式.

使用单双引号的某些组合:

  • 知道你是否需要寻找字符串插值.
  • 可能会稍微快一点(虽然这么轻微但不足以影响github风格指南).


小智 5

我曾经使用单引号,直到我知道我需要插值.然后我发现当我回去并且不得不将一些单引号改为双引号时,我浪费了很多时间.性能测试显示使用双引号没有可测量的速度影响,因此我主张始终使用双引号.

唯一的例外是在替换字符串中使用带有反向引用的sub/gsub时.然后你应该使用单引号,因为它更简单.

mystring.gsub( /(fo+)bar/, '\1baz' )
mystring.gsub( /(fo+)bar/, "\\1baz" )
Run Code Online (Sandbox Code Playgroud)