コーディングルール2

Stringに+は使わない。

+がダメな例

str = "出力"
str = str + "するよ"
puts str

+が良い例

str = "出力"
str2 = str + "するよ"
puts str
puts str2

上記の方はレシーバ自体を破壊的に変えている感じがするけれど、
新しいオブジェクトを生成しててメモリを消費する。
たのしいRubyとか割といろんな本に書いてるね。
でかいtxtファイルとかを読み込んで、1行ずつ+で文字列に加えたり、
ループでひたすら+しちゃうのは良くない。
レシーバを破壊的に変えて文字列を連結する場合は、

str = "出力"
str << "するよ"
puts str
str = "出力"
str.concat("するよ")
puts str

上2つのどちらかじゃないとダメ。
これだと破壊的にレシーバを置き換える更新をして連結をするから、
1個のStringオブジェクトのままで済んでメモリの消費を抑えられる。

ということで、Stringに+は基本的に使わない!というのは周りにも煩く言ってます。

ちなみに式展開を使って

str = "出力"
puts "#{str}するよ"

のような事も良くしますが、これは新しいオブジェクトが出来ちゃうかもしれない。
にわか知識です(´Д`;)これも良くない気がしてきた…