酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

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のオススメ「良い例」だそうです!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 悪い例
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

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

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

1
2
3
4
5
# 悪い例 - 0はいくつありますか?
num = 1000000

# 良い例 - 人の頭でもより簡単に解析できます
num = 1_000_000

Railsの国際化(i18n)の「lazy lookup」について

辞書ファイルで下のように訳語が定義されている場合、app/views/users/show.html.hamlでは下記の呼び出し方でusers.show.titleを呼び出すことができます。 このような呼び出し方を “lazy lookup” と呼びます。

1
2
3
4
5
6
7
8
9
10
11
12
# 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


押さえておきたい書籍

いかがだったでしょうか?
もし説明がわかりにくかったり、間違っている場所があればぜひ一言!

Comments