Quel style de guillemets Ruby préférez-vous?

Quel style de guillemets Ruby préférez-vous? Jusqu’à présent, j’ai toujours utilisé des 'single quotes' moins que la chaîne ne contienne certaines séquences d’échappement ou certaines interpolations, auquel cas je dois évidemment utiliser des "double quotes" .

Cependant, y a-t-il vraiment une raison de ne pas utiliser partout des chaînes entre guillemets doubles?

N’utilisez pas de guillemets si vous devez leur échapper. Et ne tombez pas dans “single vs double quotes” piège. Ruby prend parfaitement en charge les délimiteurs arbitraires pour les littéraux de chaîne:

Miroir du site – https://web.archive.org/web/20160310224440/http://rors.org/2008/10/26/dont-escape-in-ssortingngs

Site d’origine – http://rors.org/2008/10/26/dont-escape-in-ssortingngs

J’utilise toujours des guillemets simples sauf si j’ai besoin d’une interpolation.

Pourquoi? Ça a l’air plus beau. Lorsque vous avez une tonne de choses à l’écran, beaucoup de guillemets simples vous donnent moins de “fouillis visuel” que beaucoup de guillemets doubles.

J’aimerais noter que ce n’est pas quelque chose que j’ai délibérément décidé de faire, juste quelque chose que j’ai «évolué» au fil du temps en essayant d’obtenir un code plus beau.

J’utilise occasionnellement% q ou% Q si j’ai besoin de guillemets en ligne. Je n’ai jamais utilisé Heredocs qu’une ou deux fois.

Comme beaucoup de programmeurs, j’essaie d’être aussi précis que pratique. Cela signifie que je tente de faire le moins de travail possible pour le compilateur en faisant en sorte que mon code soit aussi simple que possible. Donc, pour les chaînes de caractères, j’utilise la méthode la plus simple qui suffit à mes besoins pour cette chaîne.

 <  

Mon premier test simple de la qualité de la coloration syntaxique fourni par un programme est de voir à quel point il gère toutes les méthodes de citation.

J’utilise des guillemets simples sauf si j’ai besoin d’une interpolation. L’argument selon lequel il serait gênant de changer plus tard lorsque vous avez besoin d’interpolations change dans l’autre sens: vous devez changer de double à simple lorsque vous avez constaté qu’il y avait un # ou un \ dans votre chaîne qui vous a échappé t l’intention.

L’avantage du défaut de guillemets simples est que, dans une base de code qui adopte cette convention, le type de guillemets agit comme un repère visuel indiquant s’il faut s’attendre à des expressions interpolées ou non. Ceci est encore plus prononcé lorsque votre éditeur ou IDE met en évidence les deux types de chaînes différemment.

J’utilise la syntaxe% {…..} pour les chaînes multi-lignes.

J’utilise généralement des guillemets doubles sauf si je dois spécifiquement désactiver l’évasion / l’interpolation.

Je vois des arguments pour les deux:

Pour utiliser principalement des guillemets doubles:

  • La ligne direcsortingce du style github ruby préconise de toujours utiliser des guillemets doubles:

entrer la description de l'image ici

  • Il est plus facile de rechercher une chaîne foobar en recherchant “foobar” si vous étiez compatible avec la citation. Cependant, je ne le suis pas. Je recherche donc [‘”] foobar [‘”] en activant les expressions rationnelles.

Pour utiliser une combinaison de guillemets simples:

  • Sachez si vous devez rechercher une interpolation de chaîne.
  • Peut-être légèrement plus rapide (bien que si léger, cela ne suffisait pas pour affecter le guide de style github).

J’avais l’habitude d’utiliser des guillemets simples jusqu’à ce que je savais que j’avais besoin d’une interpolation. Ensuite, j’ai constaté que je perdais beaucoup de temps à revenir en arrière et que je devais remplacer certains guillemets simples par des guillemets doubles. Les tests de performance n’ont montré aucun impact quantifiable sur la vitesse en utilisant des guillemets, alors je préconise de toujours utiliser des guillemets doubles.

La seule exception est l’utilisation de sub / gsub avec des références dans la chaîne de remplacement. Ensuite, vous devriez utiliser des guillemets simples, car c’est plus simple.

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

J’utilise des guillemets simples sauf si j’ai besoin d’interpolation, ou la chaîne contient des guillemets simples.

Cependant, je viens d’apprendre l’astuce délimiteur arbitraire de la réponse de Dejan, et je pense que c’est génial. =)