Ruby 1行が長くなりすぎるときの対応策

Ruby Style Guide (日本語訳)によると、コードは1行80字まで

メソッド名が長かったりするとどうしてもコードの横幅というか1行が長くなることがある。Rubyは改行を区切りとみなすため、処理の途中で改行するときは注意が必要。

1行を短くする方法

式で長くなるとき

式は、+=などを行末に置けば、式が終わっていないものとみなされるので改行を入れることができる。

intxxxxxxxxxxxxxxx1 = 10
intxxxxxxxxxxxxxxx2 = 2
intxxxxxxxxxxxxxxx3 = 3
total = intxxxxxxxxxxxxxxx1 + intxxxxxxxxxxxxxxx2 + intxxxxxxxxxxxxxxx3
puts total #=> 15

=+の直後で改行するのはOK。

intxxxxxxxxxxxxxxx1 = 10
intxxxxxxxxxxxxxxx2 = 2
intxxxxxxxxxxxxxxx3 = 3
total =
  intxxxxxxxxxxxxxxx1 +
  intxxxxxxxxxxxxxxx2 +
  intxxxxxxxxxxxxxxx3
puts total #=> 15  # 正しい

+の前で改行すると、そこで式が終わったものと認識されてしまうのでNG。

intxxxxxxxxxxxxxxx1 = 10
intxxxxxxxxxxxxxxx2 = 5
intxxxxxxxxxxxxxxx3 = 3
total = intxxxxxxxxxxxxxxx1
      + intxxxxxxxxxxxxxxx2
      + intxxxxxxxxxxxxxxx3
puts total #=> 10  # 期待する答えにならない

(参考:Ruby: 文の途中で改行する/if文も値を返す ― コーディングミスを防ぐには?(1) - Build Insider

文字列で長くなるとき

文字列連結の場合は、\を使うしかない。

\を用いた行の継続は可能であれば避けましょう。 可能であればというのは、つまり、文字列連結以外のすべての場合でです。

Ruby Style Guide (日本語訳)も、良い例 (ただし、それでも極めて醜い)と言いながら許容してくれている。

long_string = "name: #{item.name} type: #{item.file} size: #{item.size} price: #{item.price}"

\で行継続。

long_string =
  "name: #{item.name} "\
  "type: #{item.file} "\
  "size: #{item.size} "\
  "price: #{item.price}"