#はじめに
下記の中から忘れそうなものをピックアップした
参照先:https://shugo.net/ruby-codeconv/codeconv.html
#ソースコードの整形
##インデント
インデント幅は2とする。また、インデントにはスペースのみを使用し、タブは使用しない。
#コメント
メソッド定義の中にはコメントは記述しない。
#構文に関する規約
##クラスの構成要素
クラスの構成要素は以下の順序で記述する。
- モジュールのインクルード
- 定数の定義
- クラス変数・クラスのインスタンス変数の定義
- パブリックなクラスメソッドの定義
- アクセサの定義
- initializeの定義
- パブリックなインスタンスメソッドの定義
- プロテクティッドなクラスメソッドの定義
- プロテクティッドなアクセサの定義
- プロテクティッドなインスタンスメソッドの定義
- プライベートなクラスメソッドの定義
- プライベートなアクセサの定義
- プライベートなインスタンスメソッドの定義
- ネストしたクラスの定義
##アクセサの定義
アクセサの定義には、attr_accessor
・attr_reader
・ attr_writer
を使用する。(attr
は使用しない。)
##メソッドの定義
メソッド定義に引数がない場合は、括弧を省略する。
#正
def foo
...
end
#誤
def foo()
...
end
##メソッド呼び出し
print
やputs
やp
の場合は、引数の括弧を省略してもよい。
##ブロック
ブロックは基本的にdo ... end
を使用する。ただし、メソッドチェインを行う場合は{ ... }
を使用する。
##return
メソッドの値を返す場合は、必ずreturn
を使用する。また、return
の括弧は省略する。
#正
def add(x, y)
return x + y
end
#誤
def add(x, y)
x + y
end
def add(x, y)
return(x + y)
end
##yield
yield
の呼び出し方法はメソッド呼び出しに準ずる。
##条件分岐
-
if !x
のような場合は、unless x
に置き換える。ただし、unless
の場合、else
は使用しない。 - 条件が十分に簡単で、一行で書ける場合は、
if
修飾子を使用してもよい。 -
case
を使用できる場合は、case
を使用する。 - 条件分岐の式の値は使用しない。
#正1
unless x
puts "x is false"
end
#誤1
unless x
puts "x is false"
else
puts "x is true"
end
#正2
puts "x is true" if x
#誤2
puts "foo && bar && baz && quux" if foo &&
bar && baz && quux
#正3
case x
when 1
...
when 2
...
end
#誤3
if x == 1
...
elsif x == 2
...
end
#正4
if x > 0
msg = "x > 0"
else
msg = "x <= 0"
end
#誤4
msg = if x > 0
"x > 0"
else
"x <= 0"
end
##繰り返し
-
while !x
のような場合は、until x
に置き換える。 - 無限ループには
loop
を使用する。
##論理演算子
論理演算には!
や&&
や||
を使用する。(not
/and
/or
は使用しない。)
##文字列リテラル
文字列リテラルには基本的に"..."
を使用する。ただし、特殊文字を解釈させたくない場合のみ、'...'
を使用する。
また、原則的にヒアドキュメントは使用しない。
#命名規約
##全般
- 原則として、単語の省略は行わない。
- スコープが狭いループ変数には、i, j, kという名前をこの順序で使用する。
- スコープが狭い変数名には、クラス名を省略したものを使用してよい。(例:
eo = ExampleObject.new
)
##クラス・モジュール名
クラス・モジュール名は、各単語の一文字目を大文字にし、_
などの区切文字は使用しない。ただし、HTTPなどの略語の場合はすべて大文字のままとする。
#正
ExampleClass
HTTPClient
#誤
Example_Class
EXAMPLE_CLASS
HttpClient
HTTPclient
HTTP_Client
##メソッド名
メソッド名は、すべて小文字とし、単語の区切りに_
を用いる。メソッド名には動詞の原形を使用する。
#正
add_something
#誤
addsSomething
Add_Something
##定数名
クラス・モジュール名以外の定数名は、すべて大文字とし、単語の区切りに_
を用いる。
##変数名
変数名は、すべて小文字とし、単語の区切りに_
を用いる。
##ファイル名
ファイル名は、すべて小文字とし、単語の区切りに-
を用いる。
また、ファイル中の主な定義クラスの名前を変換したものをファイル名に使用する。
(モジュールを名前空間として使用する場合は、ディレクトリを使用して階層構造を表現する。)
foo.rb # クラスFooを定義
foo-bar.rb # クラスFooBarを定義
foo/bar-baz.rb # クラスFoo::BarBazを定義