Rubyスタイルガイドを読んだ
RoboCopのRubyスタイルガイドからforkされたスタイルガイドを発見しました。
結構前からあるみたいなので、今更感はあります。。
CookpadやMoneyforward、Airbnbなど色んな企業のコーディングスタイルガイドがありますが、
それらと比べて、細かくボリュームもありブレもなくなりそうで良さそうに思いました。
また、宗教戦争が起こりそうなところは、どちらもアリでプロジェクトの中での決めが重要というスタンスなのも良いなと思いました。
いくつか知らないものもあったので、メモ代わりにまとめます。
&&=
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub
# bad if something something = something.downcase end # bad something = something ? something.downcase : nil # ok something = something.downcase if something # good something = something && something.downcase # better something &&= something.downcase
使ったことなかったですが、somethingのnilチェックがスマートに行えます。
Array#reverse_each
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub
# bad array.reverse.each { ... } # good array.reverse_each { ... }
パフォーマンスが良いそうです。
Exceptionのメッセージ
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub
# bad raise SomeException.new('message') # `raise SomeException.new('message'), backtrace`とする書き方が存在しないことに注意しましょう。 # good raise SomeException, 'message' # `raise SomeException, 'message', backtrace`の用法と一貫性があります
Kernel#raise
は下記のように2つの呼び方があり、後者に統一しようとのことのようです。
# [https://docs.ruby-lang.org/ja/2.6.0/method/Kernel/m/raise.html:title]参照 raise(message) -> () raise(error_type, message = nil, backtrace = caller(0)) -> ()
Hash#values_at
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub
# bad email = data['email'] username = data['nickname'] # good email, username = data.values_at('email', 'nickname')
Hashから複数の値を取り出す際には、 values_at
を使った方がスマートに書けます。
Object#__send__
メソッド名の衝突を避けるために、 send
よりも __send__
を使った方がよいというルールです。
例えばEmailクラスで独自のsendメソッドを定義した際に、衝突を回避できます。
(そもそもあまり send
使いたくないですが。)