LoginSignup
20
20

More than 5 years have passed since last update.

Rubyコーディング規約

Last updated at Posted at 2018-01-31

下記サイトに記載されている規約を写経
(公式ではなく、多くのRubyistが利用する規約)

参考サイト①
参考サイト②
参考サイト③

インデント、1行の桁数

  • 基本 スペース2つ、タブはNG、一行80桁まで
  • caseとwhenは揃える(case式代入時を除く)
    case num
    when 1
      p 1
    when 2
      p 2
    else
      p 3
    end

    # 代入時は揃えない(変数名の長さに依存するから)
    num_value = case num
      when 1 then p 1
      when 2 then p 2
      else 3
      end

シンタックス

  • 下記にはスペースを記述
    • 演算子の前後(べき乗の前後を除く**)
      sum = 1 + 2
    • カンマ、コロン、セミコロンの後ろ
      a, b = 1, 2
      1 > 2 ? true : false; puts 'Hi'
    • 中括弧の前後(開け閉じ両方)
      [1, 2, 3].each { |e| puts e }

識別子

  • モジュール・クラス名にはCamelCase
  • 上記を含むファイル名には、メインクラスをdowncase
  • 定数はCONST_NAME
  • 変数やメソッドはsnake_case

括弧の省略

  • 戻り値が無い場合は省略 -> function の呼び出しでは必ず括弧を付けて、 procedure の呼び出しでは必ず括弧を省略 なお
    • function - 戻り値が存在する「関数」
    • procedure - 戻り値が存在しない「手続き」
 def has_arg(args) # 省略しちゃだめ
 end

 def not_has_arg # 省略する
 end
  • 下記は例外
    • レシーバがあり、引数が存在しないときは省略 string.to_s
    • 引数に*や&を含むとき
   map(*args)
   map(&block)

メソッド引数括弧の空白

入れない
(エラーになる事もある)

 def space(arg) # OK
 end

 def space( arg ) # NG
 end

クラス、メソッド、モジュールの区切りには空行を入れる

 class Hoge
      def hoge
      end

      def fuga
      end
 end

 class Foga
 end

出来るだけforは避けてeachを利用

# OK
arr.each { |elm| puts elm }

# elmがブロックスコープに入らないため、構文外から呼び出せる
for elm in arr do
end

3項演算子をネストしない

# OK
if is_login
  is_admin_login ? true : false_1
else
    false_2
end

# う○こ
is_login ? (is_admin_login ? true : false_1) : false_2

elseが無い場合は後置if/unlessを利用

# OK
do_something if some_condiiton

# NG
if some_condition
    do_condiiton
end

否定に!は利用せずunlessを利用

# OK
do_something unless some_condition

# NG (可読性に配慮して「unless」が用意されているため)
do_something ! some_condition
20
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20