Ruby 慣習

ブロック

  • ブロックを複数行で書く場合 : do ~ end を使う
  • 1 行で書く場合 : {} を使う
3.times do puts "ruby" end
3.times { puts "ruby" }

メソッド

メソッド名 method_name : スネークケース

  • すべて小文字

メソッドの () は省略できる

  • 省略できる場合は省略することが多い
    • ただし、省略するのはあくまでメソッド呼び出し側で、定義側はあまり省略しない
def calc(n)
  n * n
end

p calc(5)
p calc 5

クラス

クラス名 ClassName : キャメルケース

  • クラス名の先頭は大文字、2 文字目以降は小文字にする
    • Drink Item
  • 2 語以上の単語になる場合は、キャメルケースを使う
    • CaffeeLatte ListGenerate

インスタンス変数を取得するメソッドのメソッド名

  • インスタンス変数名から @ を除いたものにすることが多い
    • このメソッドは、attr_reader メソッドを使うと 1 行で定義できる
class Drink
  def order(item)
    puts "#{item}をください"
    @name = item
  end
  def name
    @name
  end
end

drink = Drink.new
drink.order("コーヒー")
puts drink.name # コーヒー

インスタンス変数へ代入するメソッドのメソッド名

  • 慣習的に、インスタンス変数名から @ を取り除き、末尾に = を加えた形にすることが多い
  • 以下の例の場合、name= が変数名になる
class Drink
  def name=(text)
    @name = text
  end
  def name
    @name
  end
end

drink = Drink.new
drink.name= "コーヒー"
puts drink.name # コーヒー
  • 変数名の末尾が = になっていると、メソッド名の name= の間に半角スペースを空けることができる
    • drink.name= "コーヒー"drink.name = "コーヒー" と記述できる
      • 慣習に従うことで、インスタンス変数への代入が感覚的に分かりやすくなる
  • 今回のメソッドは、attr_writer メソッドを使うと 1 行で定義できる

モジュール

モジュール名 ModuleName : キャメルケース

  • クラス同様に、先頭は大文字・キャメルケースでモジュール名を定義する