Rubyプログラミングにおけるネーミングスタイルガイド
英語での識別子の命名。
# bad - identifier using non-ascii characters
заплата = 1_000
# bad - identifier is a Bulgarian word, written with Latin letters (instead of Cyrillic)
zaplata = 1_000
# good
salary = 1_000
変数とメソッドにsnake_case形式で名前を付けます。
# bad
:'some symbol'
:someSymbol
:someSymbol
someVar = 5
def someMethod
...
end
def SomeMethod
...
end
# good
:some_symbol
def some_method
...
end
スネークケース:句読点は削除され、スペースは単一のアンダースコアに置き換えられます。通常、文字は同じケース (UPPER_CASE_EMBEDDED _UNDERSCORE または lower_case_embedded_underscore) を共有しますが、ケースを混ぜることができます。
クラスやモジュールの命名には、CamelCase 形式を使用します。(HTTPのように頭文字を省略した大文字の使用はそのままにしてください。
RFC、XML)
# bad
class Someclass
...
end
class Some_Class
...
end
class SomeXml
...
end
# good
class SomeClass
...
end
class SomeXML
...
end
ファイル名はsnake_caseで、例えばhello_world.rbのようにします。
各ソースファイルにはクラス/モジュールを1つだけ入れることを目指します。ファイル名はクラスやモジュールにちなんだものにしますが、CamelCaseをsnake_caseに置き換えます。
定数の命名には SCREAMING_SNAKE_CASE を使用する。
# bad
SomeConst = 5
# good
SOME_CONST = 5
判定を示すメソッド名の末尾にクエスチョンマーク(例:Array#empty? を付ける(メソッドはtrueかfalseを返す)。
ブール値を返さないメソッドは、クエスチョンマークで終わらせてはいけません。
潜在的にquot;dangerous"となりうるメソッド名(例:自己またはパラメータを変更するメソッド、exit! (終了完了アイテムのような exit ではない)など)、危険なメソッドの安全版がある場合は、感嘆符で終わらせるべきです。
# bad - there is not matching 'safe' method
class Person
def update!
end
end
# good
class Person
def update
end
end
# good
class Person
def update!
end
def update
end
end
可能であれば、危険なメソッド(bang)を元に、対応する安全なメソッド(non-bang)を定義してください。
class Array
def flatten_once!
res = []
each do |e|
[*e].each { |f| res << f }
end
replace(res)
end
def flatten_once
dup.flatten_once!
end
end
ショートブロック内でreduceを使用する際の名前付きパラメータ|a、e|(アキュムレータ、エレメント)。
#Combines all elements of the enum enumeration by applying a binary operation, specified by a block or a symbol that names a method or operator.
#Sum some numbers
(5..10).reduce(:+) #=> 45#reduce
# Same using a block and inject
(5..10).inject {|sum, n| sum + n } #=> 45 #inject inject
# Multiply some numbers
(5..10).reduce(1, :*) #=> 151200
# Same using a block
(5..10).inject(1) {|product, n| product * n } #=> 151200
二項演算子を定義するときは、引数の名前を other にします(<< と [] は意味合いが異なるので例外です)。
def +(other)
# body omitted
end
map は collect よりも、find は detect よりも、select は find_all よりも、reduce は object よりも、size は length よりも優先されます。韻を踏んだメソッド名(collect, detect, objectなど)はSmallTalk言語から受け継いだもので、他の言語ではあまり一般的ではありません。find_allの代わりにselectを使うことは推奨されます。selectはrejectとうまく連動し、その名前は非常にわかりやすいからです。
count を size の代わりに使わないでください。Array for Enumerable 以外のオブジェクトは、コレクション全体を反復して
はそのサイズを決定します。
# bad
some_hash.count
# good
some_hash.size
map + flatten の組み合わせではなく、flat_map を使用することを推奨します。
これは、2より深い配列には適用されません。例えば users.first.songs == ['a', ['b', 'c']] の場合、flat_map の代わりに map + flatten の組合せを使用します。
flat_map は配列を一段階平坦化しますが、flatten は配列全体を平坦化します。
# bad
all_songs = users.map(&:songs).flatten.uniq
# good
all_songs = users.flat_map(&:songs).uniq
reverse.eachの代わりにreverse_eachを使用します。reverse_eachは新しい配列を割り当てないため、良いことです。
# bad
array.reverse.each { ... }
# good
array.reverse_each { ... }
関連
-
Ruby正規表現とサンプルコード
-
挿入ソートアルゴリズムのRuby実装と高度な双方向挿入ソートコード例
-
Ruby on Railsフレームワークの設計構造をMVCマインドで理解する
-
Windowsでrubyとrailsをインストールする際に発生する問題点まとめ
-
RubyのHash構造体の基本操作のまとめ
-
Rubyのオブジェクト指向のアプローチによるプログラミング学習雑学
-
Rubyのデザインパターン開発におけるobserverパターンの一例
-
デザインパターンにおけるDecoratorパターンを用いたRubyの例
-
Rubyのデザインパターン。プログラミングにおけるシングルトンパターンの活用
-
Ruby on RailsでMarkdownを使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Rubyイテレータの知識まとめ
-
基本的なユーザー登録とログイン機能を実装するためのRuby on Railsチュートリアル
-
Ruby on Rails:rakeとデータベースのデータ移行作業
-
Rubyを使ったラムダ計算の詳しいシミュレーション方法
-
MongoDBに接続するためのRuby on Railsフレームワークアプリケーション チュートリアル
-
Rubyの文法と言語機能のまとめ
-
RubyのProcクラスとProc.newメソッドの使用法
-
Rubyのinstance_evalメソッドとclass_evalとの比較
-
Rubyのデザインパターン。プログラミングにおけるストラテジーパターンの活用
-
Rubyの基本文法チュートリアル