Style/EmptyBlockParameter
とStyle/EmptyLambdaParameter
というRuboCopのCopをだいぶ前に追加した。後者はおまけ
なにこれ
Rubyでは、ブロック引数が存在しない場合でもバー(|
)を書くことが出来る。
foo.do_something do foobar end # 上の式とこれは等しい foo.do_something do || foobar end
これは両方とも同じ動作をする1。
Style/EmptyBlockParameter
は、上記のコードの2番目のブロックの書き方を警告し、1番目の書き方で書きましょうと推奨する。
Style/EmptyBlockParameter
を無視して良いケース
ブロック引数が存在しなくてもバーを書きたいスタイルの人は、無視をすると良いと思う。 ただし、Rubyではこのようなケースでバーを書くスタイルは極めて一般的ではないと思われる2。 そのため、Ruby入門者の方などで「どっちのスタイルで書けばいいんだろう……」と悩んだ時は、バーを書かないスタイルに統一をしたほうが良いであろう。
Style/EmptyLambdaParameter
(おまけ)
このCopはStyle/EmptyBlockParameter
を作っている時に出来た副産物である。
このCopは、ラムダに引数がない時にカッコを省略するべきだと警告を出す。
# 警告が出る -> () { do_something } # 警告が出ない -> { do_something }
これはどっちのスタイルの方がよいのかよくわからないので、Copに従うかどうかは好きにしたら良いと思う。
Style/EmptyBlockParameter
(及びStyle/EmptyLambdaParameter
)はRuboCopの次期リリース(恐らく0.52.0)から使用することが出来ます。
-
ちゃんと調べてないから、もしかしたらarityの違いとかあるかも知れない↩
-
https://github.com/ruby/ruby のソースコードにこのCopをかけても32件しか警告が出ず、それも全てテストコードだった。ここからもバーを書くスタイルは一般的ではないだろうということが推察できる。↩