Rubyスタイルガイドを読む: 文法(6)演算子など

こんにちは、hachi8833です。 「Rubyスタイルガイドを読む」シリーズ文法編、第6回目をお送りします。 Rubyスタイルガイドを読む: 総もくじ 前回: Rubyスタイルガイドを読む: 文法(5)ブロック、proc 次回: Rubyスタイルガイドを読む: 文法(7)lambda、標準入出力など 文法(6) 演算子など 参照: bbatsov/ruby-style-guide 2-38【統一】分岐の条件部分で=による代入の結果を値として使う場合は、条件全体をかっこ( )で囲むこと Don’t use the return value of = (an assignment) in conditional expressions unless the assignment is wrapped in parentheses. This is a fairly popular idiom among Rubyists that’s sometimes referred to as safe assignment in condition. # 不可 (+ a warning) if v = array.grep(/foo/) do_something(v) # コード end # 良好 (MRIでは警告されるかもしれないが、RuboCopでは警告されない) if (v = array.grep(/foo/)) do_something(v) # コード end # 良好 v = array.grep(/foo/) if v do_something(v) # コード end 代入=の結果を条件式に使うことについて、「==と間違えたように見えて気持ち悪いから嫌だ」という意見と「いや、=を条件に書く方が簡潔でいいじゃないか」という意見がよく衝突します。「代入の結果を使う場合は条件全体をかっこ( )で囲む」というのは、おそらく両者の間を取ったのでしょう。 なお、私もときどきわからなくなっていましたが、代入演算子=が返す結果は「true/false」ではなく「代入された値」です。 2-39【統一】できるだけ自己代入演算子を使う Use shorthand self assignment operators whenever applicable. # 不可 x = x + y x = x * y x = x**y x = x / y x = x || y x = x && y # 良好 x += y x *= y x **= y x /= y x ||= y x &&= y 自己代入演算子を使わないスタイルはそれはそれで読みやすいというメリットもあると思いますが、これもどちらが正しいとかではなく、自己代入演算子を使う方に揃えたということですね。 2-40【統一】 「変数が初期化されていない場合のみ初期化する」場合は、||=を使う Use ||= to initialize variables only if they’re not already initialized. # 不可 name = name ? name : ‘Bozhidar’ # 不可 name = ‘Bozhidar’ unless name # 良好 … Continue reading Rubyスタイルガイドを読む: 文法(6)演算子など