Top > 開発ガイド > 規約類 > Ruby

Ruby

体裁

インデント

  • 原則的にインデントを入れる
  • インデントは半角スペース2文字とする
  • タブの使用は禁止する

空行

  • 可読性を上げるために空行を適宜入れる
    • 複数のクラスの区切りには空行を挿入する
      • class Foo
          ...
        end
        
        class Bar
          ...
        end
        
    • クラス内の各構成要素の区切りには空行を挿入する(但し、最初の構成要素の前や最後の構成要素の後には空行は挿入しない)
      • class Foo
          attr_accesor :bar
        
          def baz
            ...
          end
        
          def quux
            ..
          end
        end
        

一行の文字数

  • 一行の文字数は特に制限しない

コメント

  • Rubricksコア
    • コメントはクラスモジュールやパブリックメソッド毎にRDocスタイルで記述する
      • メソッド内にはコメントを記述しない
  • コンポーネント
    • 制限無し

命名規約

全般

  • 原則として単語の省略は行わない
  • スコープが狭い変数名には、クラス名を省略したものを使用してよい
    • 例: eo = ExampleObject.new

クラス名・モジュール名

  • 各単語の一文字目を大文字にする
  • '_'などの区切り文字は使用しない
    • 良い例
      ExampleClass  
      HttpClient
      
    • 悪い例
      Example_Class
      EXAMPLE_CLASS
      HTTPClient
      HTTPclient
      HTTP_Client
      

メソッド名

  • 全て小文字にする
  • 単語の区切りに'_'を使用する
    • 良い例
      def add_something
        ...
      end
      
    • 悪い例
      def addSomething
        ...
      end
      
      def Add_Something
        ...
      end
      
  • 真偽値を返すメソッドは末尾に'?'を付ける
    • 良い例
      def visible?
        ...
      end
      
    • 悪い例
      def is_visible
        ...
      end
      

変数名

  • 全て小文字にする
  • 単語の区切りに'_'を使用する

定数名

  • 全て大文字にする
  • 単語の区切りに'_'を使用する

DBテーブル名

  • 全て小文字にする
  • 単語の区切りに'_'を使用する

各種構文

クラス構成要素

  • クラスの構成要素は以下の順番で記述する
    1. 宣言全般
      • 定数
      • acts_as_...
      • validates_...
      • attr_...
    2. クラススコープの定義
    3. インスタンススコープの定義
  • 各スコープの定義内では以下の順番で定義を行う
    1. 変数
    2. publicメソッド
    3. protectedメソッド
    4. privateメソッド

アクセサの定義

  • アクセサの定義はattr_accessor・attr_reader・attr_writerを用いる
    • attrは使用しない

メソッドの定義

  • メソッド定義の引数リストには括弧を付ける
  • 但し引数が無い場合には括弧を省略する
    • 良い例
      def foo(x, y)
        ...
      end
      
      def bar
        ...
      end
      
    • 悪い例
      def foo x, y
        ...
      end
      
      def bar()
        ...
      end
      
  • クラスメソッドの定義には「self」を利用する
    • 良い例
      def self.foo
        ...
      end
      
      class << self
        def bar
          ...
        end
      end
      
    • 悪い例
      def Foo.foo
        ...
      end
      
      class << Foo
        def bar
          ...
        end
      end
      

条件分岐

  • case式のwhenはインデントしない
    • 良い例
      case x
      when 1
        ...
      when 2
        ...
      else
        ...
      end
      
    • 悪い例
      case x
        when 1
          ...
        when 2
          ...
        else
          ...
        end
      
  • if式・unless式のthenは省略する
  • 条件が十分に簡単で一行で収まる場合はif修飾子・unless修飾子を用いてもよい
    • 良い例
      if x > 0
        puts 'x > 0'
      else
        puts 'x <= 0'
      end
      
      unless x
        puts 'x is false'
      end
      
      puts 'x is true' if x
      
    • 悪い例
      if x > 0 then
        puts 'x > 0'
      end
      
  • 条件分岐の式の値は使用しない
    • 良い例
      if x > 0
        msg = 'x > 0'
      else
        msg = 'x <= 0'
      end
      
    • 悪い例
      msg = if x > 0
              'x > 0'
            else
              'x <= 0'
            end
      

繰り返し

  • while式のdoは省略する
    • 良い例
      while condition
        ...
      end
      
    • 悪い例
      while condition do
        ...
      end
      

論理演算子

  • 論理演算子は「&&||・!」もしくは「and・or・not」のどちらを使用しても構わない
    • 但し、演算子の優先順位が異なるので各自注意すること(個人Lvでどちらを使うのか統一するとよい)

三項演算子

  • 三項演算子を利用する際、複数行に及ぶ場合には特に可読性に注意する