Ruby では変数名のプレフィックスに記号をつけることにより、グローバル変数、インスタンス変数、クラス変数を区別します。
| タイプ | 変数名のルール | 例 |
|---|---|---|
| ローカル変数 | 英数字で始まる | local_var |
| グローバル変数 | $ で始まる |
$gloval_var |
| インスタンス変数 | @ で始まる |
@instance_var |
| クラス変数 | @@ で始まる |
@@class_var |
大文字、小文字の使い分けについては次のようにすることが多いようです。
MyClass)my_var、my_method)MY_CONSTANT)'abc')"Hello #{name}")ファイル名はすべて小文字で、クラス名などの単語の区切りはアンダースコア (_) を使用する。
モジュールの階層はディレクトリ階層で表現する。
test_case.rb(TestCase クラス)unit/test_case.rb(Unit モジュール以下の TestCase クラス)このルールは、下記の RubyGems の命名規則を考慮しています。
RubyGems.org などで公開する Gem の名前は、フラットなファイル名で一意に命名する必要があるため、アンダースコアやハイフンの使い方がルール化されています。
| Gem name | Require statement | Main class or module |
|---|---|---|
ruby_parser |
require 'ruby_parser' |
RubyParser |
rdoc-data |
require 'rdoc/data' |
RDoc::Data |
net-http-persistent |
require 'net/http/persistent' |
Net::HTTP::Persistent |
net-http-digest_auth |
require 'net/http/digest_auth' |
Net::HTTP::DigestAuth |
_) 。-)。実際のモジュールファイルはディレクトリ構造を作って格納する。例えば、net-http-digest_auth という名前の Gem が提供する DigestAuth クラスは、実際には下記のようなファイルとして作成されています。
class Net::HTTP::DigestAuth
VERSION = '1.4'
...
end
上記では Net::HTTP::DigestAuth と、:: 区切りでクラス定義していますが、上位のクラスが定義されていない場合は class 定義を入れ子構造で記述する必要があります。
クラスではなくて、モジュールを提供しているのであれば、例えば下記のようなファイルになります。
module Foo
module Bar
module MyModule
def self.my_method
..
end
end
end
end