コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyのプログラムでは文字列リテラルはダブルコーテーションで統一したほうがいいのではないかという考え方

かの onkcop には以下のような設定がある

# * 式展開したい場合に書き換えるのが面倒
# * 文章ではダブルクォートよりもシングルクォートの方が頻出する
# ことから EnforcedStyle: double_quotes 推奨
Style/StringLiterals:
  EnforcedStyle: double_quotes

# 式展開中でもダブルクォートを使う
# 普段の文字列リテラルがダブルクォートなので使い分けるのが面倒
Style/StringLiteralsInInterpolation:
  EnforcedStyle: double_quotes

-onkcop/rubocop.yml at master · onk/onkcop

Rubyにおける "' の違い

"(ダブルコーテーション)は式展開するが、'(シングルコーテーション)は式展開をしないというのが大きな違い。

またシングルコーテーションは

シングルクォートで囲まれた文字列では、 \ (バックスラッシュそのもの)と \' (シングルクォート) を除いて文字列の中身の解釈は行われません。 - リテラル (Ruby 2.7.0 リファレンスマニュアル)

とあるように、記号をまま記述したいときだけ有用。

どちらがいいのかと考える

どちらに寄せるほうがいいかと考えたときに、明らかにシングルコーテーションで書きたい場面よりもダブルコーテーションが書きたい場面のほうが頻出する。

そのため、シングルで書いてしまい、式展開するときだけダブルで書き直すという作業が煩雑になるのでダブルコーテーションを使うほうがよいのではないか、という考えになる。

関連リンク