2008-11-10 10 views
46

¿Qué estilo de cotización de cuerdas Ruby prefieres? Hasta ahora siempre he usado 'single quotes' a menos que la cadena contenga ciertas secuencias de escape o interpolación, en cuyo caso obviamente tengo que usar "double quotes".¿Qué estilo de cotización de cuerdas Ruby prefieres?

Sin embargo, ¿hay realmente alguna razón para no utilizar simplemente cadenas de comillas dobles en todas partes?

Respuesta

47

No utilice comillas dobles si tiene que escapar de ellas. Y no caiga en la trampa de "comillas simples versus dobles". Ruby tiene un excelente soporte para delimitadores arbitrarios para los literales de cadena:

Espejo del sitio - https://web.archive.org/web/20160310224440/http://rors.org/2008/10/26/dont-escape-in-strings

original del sitio - http://rors.org/2008/10/26/dont-escape-in-strings

+7

Ese enlace está muerto, aquí hay un enlace de trabajo: http://rors.org/2008/10/26/dont-escape-in-strings.html – Brandon

+0

¡Ambos enlaces están muertos! – kaybee99

+0

Los enlaces funcionan ahora –

8

Normalmente uso comillas dobles a menos que necesite específicamente desactivar el escape/interpolación.

31

Siempre uso comillas simples a menos que necesite interpolación.

¿Por qué? Se ve mejor. Cuando tienes toneladas de cosas en la pantalla, muchas comillas simples te dan menos "desorden visual" que muchas comillas dobles.

Me gustaría señalar que esto no es algo que deliberadamente decidí hacer, algo que he 'evolucionado' a lo largo del tiempo para tratar de lograr un código de mejor apariencia.

Ocasionalmente usaré% q o% Q si necesito comillas en línea. Solo he usado heredocs tal vez una o dos veces.

+0

Las comillas simples son más fáciles de escribir también: p – sigjuice

1

utilizo comillas simples a menos que necesite la interpolación o la cadena contiene comillas simples.

Sin embargo, acabo de aprender el truco delimitador arbitrario de la respuesta de Dejan, y creo que es genial. =)

5

Solía ​​usar comillas simples hasta que supe que necesitaba la interpolación. Luego descubrí que estaba perdiendo mucho tiempo cuando volvía y tenía que cambiar algunas comillas simples por comillas dobles. Las pruebas de rendimiento no mostraron un impacto medible en la velocidad del uso de comillas dobles, por lo que recomiendo usar siempre comillas dobles.

La única excepción es cuando se utiliza sub/gsub con referencias anteriores en la cadena de reemplazo. Entonces deberías usar comillas simples, ya que es más simple.

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

Utilizo comillas simples a menos que necesite interpolación. El argumento de que es problemático cambiar más adelante cuando necesita cambios de interpolación en la otra dirección también: tiene que cambiar de doble a simple cuando descubrió que había un # o un \ en su cadena que causó un escape que no hizo. Tengo la intención.

La ventaja del valor predeterminado para las comillas simples es que, en una base de código que adopta esta convención, el tipo de comillas actúa como una señal visual de si se esperan expresiones interpoladas o no. Esto es aún más pronunciado cuando su editor o IDE resalta los dos tipos de cadenas de manera diferente.

Utilizo la sintaxis% {.....} para cadenas de varias líneas.

27

Al igual que muchos programadores, trato de ser tan específico como práctico. Esto significa que trato de hacer que el compilador haga el menor trabajo posible haciendo que mi código sea lo más simple posible. Entonces, para cuerdas, utilizo el método más simple que es suficiente para mis necesidades para esa cuerda.

<<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.' 

Mi primera prueba simple de la calidad de resaltado de sintaxis proporcionada por un programa es para ver lo bien que maneja todos los métodos de cotización.

6

veo argumentos para ambos:

Para poder utilizar su mayoría dobles comillas:

enter image description here

  • Es más fácil buscar una cadena foobar buscando "foobar" si fuiste consecuente con las citas. Sin embargo, no soy. Entonces busco ['"] foobar ['"] activando las expresiones regulares.

Para poder utilizar una combinación de doble comilla simple:

  • saber si usted tiene que buscar la interpolación de cadenas.
  • Puede ser un poco más rápido (aunque tan leve no fue suficiente para afectar la guía de estilo github).