Rubyを使っているプロジェクトのコーディング規約を見てみよう【Ginza.rb #20】


2015/2/17にみんなのウェディングさんで開催された
Ginza.rb 第20回 Rubyを使っているプロジェクトのコーディング規約を見てみよう
に参加してきました。コーディング規約をじっくり議論できる場所はなかなかなかので、かなりおもしろかったです!


🎂 スタイルガイド

今回Ginza.rbで一緒に読んだコーディング規約。

Rubyのコーディング規約

ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide

Railsのコーディング規約

rails-style-guide/README-jaJA.md at master · satour/rails-style-guide

🤔 おもしろかった規約

議論に聞き入りすぎて、あんまりメモしきれませんでしたが今日から使いたいコーディング規約の俺得メモです。

whenはcaseと同じ深さにそろえる

このスタイルは”The Ruby Programming Language”、”Programming Ruby” 双方で確率されている。
matzのオススメ「良い例」だそうです!

# 悪い例
case
when song.name == 'Misty'
puts 'Not again!'
when song.duration > 120
puts 'Too long!'
when Time.now.hour > 21
puts "It's too late"
else
song.play
end
# 良い例
case
when song.name == 'Misty'
puts 'Not again!'
when song.duration > 120
puts 'Too long!'
when Time.now.hour > 21
puts "It's too late"
else
song.play
end

なぜRubyのcase/whenはインデントしないのかを考えてみた - give IT a try

大きな数にはアンダースコアを入れる

ついつい忘れがちだけど大切!

# 悪い例 - 0はいくつありますか?
num = 1000000
# 良い例 - 人の頭でもより簡単に解析できます
num = 1_000_000

🏀 self[:attribute]を使おう

```
## Railsの国際化(i18n)の「lazy lookup」について
辞書ファイルで下のように訳語が定義されている場合、app/views/users/show.html.hamlでは次の呼び出し方でusers.show.titleを呼び出すことができます。
このような呼び出し方を "lazy lookup" と呼びます。

config/locales/en.yml

en:
users:
show:
title: ‘User details page’

app/views/users/show.html.haml

🚕 悪い例

= t users.show.title

😼 良い例

= t ‘.title’
```

🚜 最新のスキーマでDBを作る場合

Rake db:migrateでなくRake db:schema:loadを利用しよう。

🐯 おもしろそうなGem

brakeman

presidentbeef/brakeman - GitHub

セキュリティ関係の静的解析をしてくれるGem。

active_attr

cgriego/active_attr

アクティブモデルっぽい動作を実装してくれるGem。

friendly_id

norman/friendly_id

ユーザーフレンドリーなIDを生成してくれるGem。

mailcatcher

sj26/mailcatcher

シンプルなSTMPサーバとして振る舞ってくれるGem。

roadie

Mange/roadie

HTMLメールを作りやすくしてくれるGem。

🐞 おもしろそうなサービス

Hound

Hound

コーディング規約をチェックしてくれるサービス。オープンソースなら無料で使えます!

ninefold

ninefold

Rails専門のPaaSサービス。

🐮 おもしろそうな記事

【Rails】なぜクラスメソッドよりもスコープを使うべきなのか? - kotatu.org

我々(主語が大きい)は何故MySQLで外部キーを使わないのか

🗻 おもしろそうな書籍

アプリケーションをつくる英語 - 達人出版会

英語版アプリケーション開発のために、UIやメッセージでよく使われる英単語や構文パターン、さらに英語ライティングの
基本やメッセージの書き方、I18N/L10Nの基本から翻訳業者への依頼まで、幅広く紹介されている書籍だそうです!

🎃 そのほか紹介されたコーディング規約の資料

thoughtbot/guides- GitHub

guides/best-practices at master · thoughtbot/guides

styleguide/ruby.ja.md at master · cookpad/styleguide

Contributing to Ruby on Rails — Ruby on Rails Guides

moneyforward/rails-style-guide

moneyforward/ruby-style-guide

Ruby · Styleguide - GitHub

Ruby - Plataformatec Guidelines

📚 おすすめの書籍