rubyのコーディング規約 @ niigata.rb #3
DESCRIPTION
Niigata.rb #3 の資料です。 ほとんど参考サイトからかいつまんだ程度をアップするのは忍びない気も…。TRANSCRIPT
Rubyのコーディング規約
¡ ミヒャエル ¡ @mihyaeru21
¡ 長岡技術科学大学 ¡ Python, Objective-C ¡ 来年度からPerlな会社で何か ¡ 本業は提督 (レベル71)
自己紹介
Rubyの勉強会ですが
Rubyはほとんど やったことない
/(^o^)\
コーディング規約だけなら ちょっと調べればなんとか…!
¡ コードの書き方を統一 § 他人のコードも読みやすい § 自分のコードも読まれやすい § 構造の異常を発見しやい
¡ 言語や会社、団体によって様々な規約 ¡ 今回は、一般的な Ruby の規約をかるく
コーディング規約
命名規約
¡ パスカルケース ¡ “_” は使わない
ClassModuleName
Class_NamemoduleName
クラス名・モジュール名
¡ 全て小文字 ¡ 単語は動詞の原形 ¡ “_” で単語区切り
do_somethingmethod_name
methodNameDoSomethingMethod_Name
メソッド名
¡ 全て小文字 ¡ 単語は動詞/形容詞 ¡ 末尾に “?” を付与 ¡ “is_” を付けない
movable?visible?
is_movableis_visible?
メソッド名 真偽値を返す場合
¡ 全て大文字 ¡ “_” で単語区切り
CONSTANTCONSTANT_VALUE
ConstantValueBADCONSTANT
定数名
¡ 全て小文字 ¡ “_” で単語区切り
variablelong_long_variable@instance_variable$global_variable
VariablebadVariable
変数名
¡ 全て小文字 ¡ “-” で単語区切り ¡ ファイル中の主な クラス名を使う
file.rbclass-name.rb
File.rbclass_name.rb
ファイル名
構文の規約
¡ スペース2つ ¡ タブは使わない
if hoge == 1 x = fugaend
if hoge == 1 x = fugaend
インデント
¡ パラメータなし § カッコなし
¡ パラメータあり § カッコあり
def hoge return 1end
def fuga(x, y) return x * yend
def hoge()end
def fuga x, yend
メソッド定義
¡ パラメータなし § カッコなし
¡ パラメータあり § カッコあり
¡ print, puts, p § カッコなし
x = hogefuga(x, y)print x, y
x = hoge()fuga x, yprint(x, y)
メソッド呼び出し
¡ { ... } ではなく do ... endを使う
¡ 1行で書くときは { ... } を使う (メソッドチェインだけ?)
arr.each do |x| ...endarr.each { |x| ... }
arr.each { |x| ...}arr.each do |x| ... end
ブロック
¡ if の then は省略 ¡ if !hoge は unless hoge にする
¡ 条件が単純かつ 1行で書けるときは 後置の if を使う
if n == 12endunless hogeendprint n if hoge
if n == 12 thenendif !hogeendprint n if hoge && fuga && piyo
条件分岐
¡ while の do は省略
¡ while !hoge は until hoge にする
¡ 無限ループには loop do を使用
while hogeenduntil hogeendloop doend
while hoge dowhile !hoge
while true
ループ
¡ 省略しても意味解釈に影響ない部分は省略する印象 if の then や、while の do など
¡ 複雑にならないように配慮されている印象 if !x を unless に、while !x を until x にするなど
¡ 郷に入れば郷に従え(郷 = 言語, 会社, 団体, ...)
まとめ
参考: http://shugo.net/ruby-codeconv/codeconv.html