Ruby~第一回~ コーディングについて

こんばんは、さぱちんです。二回目の初投稿です。

昨日は天気予報で暑くなると聞いた気がしたので半ズボンで登校したところ、

思いの外涼しく朝一で帰りたくなりました。

 

さて、今日はRubyのコーディング規約について少しまとめておきたいと思います。

Rubyの勉強自体は少しずつ進めてますがまずは第一回ということで。

 

インデント

インデント幅は2とし、タブは使用しない。(半角スペース*2で行う)

 

一行の桁数

最大80までとする。

 

空行

複数のクラスの区切りには空行をいれる。

 

コメント

メソッド定義の中にはコメントは記述しない。

 

クラスの構成要素

クラスの構成要素は以下の順序で記述する。

1.モジュールのインクルード
2.定数の定義
3.クラス変数・クラスのインスタンス変数の定義
4.パブリックなクラスメソッドの定義
5.アクセサの定義
6.initializeの定義
7.パブリックなインスタンスメソッドの定義
8.プロテクティッドなクラスメソッドの定義
9.プロテクティッドなアクセサの定義
10.プロテクティッドなインスタンスメソッドの定義
11.プライベートなクラスメソッドの定義
12.プライベートなアクセサの定義
13.プライベートなインスタンスメソッドの定義
14.ネストしたクラスの定義

 

アクセサの定義

アクセサの定義にはattr_accessor attr_reader attr_writerを使用する。

 

メソッドの定義

メソッド定義の仮引数リストには括弧をつける。仮引数を使用しない場合は括弧は省略する。

 

クラスメソッドの定義

クラスメソッドの定義にはselfを使用する。

 

メソッドの呼び出し(yieldも同様)

メソッド呼び出しの引数リストには括弧を付ける。引数がない 場合には、括弧は省略する。

 

ブロック

ブロックは基本的にdo ... endを使用する。

 

return

メソッドの値を返す場合は、必ずreturnを使用する。 また、returnの括弧は省略する。

*メソッドはreturnされた時点で処理を終了し、returnされた値を戻り値とする。

 

条件分岐

if式のthenは省略する。また、if !xのような場合は、unless xに置き換える。ただし、unlessの場合、 elseは使用しない。また、条件が十分に簡単で、一行で書ける場 合は、if/while修飾子を使用してもよい。

caseを利用できる場合はcaseを利用する。また、thenは省略する。

 

繰り返し

whileのdoは省略する。また、while !xのような場合は、 until xに置き換える。

無限ループにはloopを使用する。

 

論理演算子

論理演算には!や&&や||を使用する。 (not/and/orは使用しない。)

*優先順位 ! > && > || >not > and > or

 

文字列リテラル

文字列リテラルには基本的に"..."を使用する。ただし、特殊文字 を解釈させたくない場合のみ、'...'を使用する。

 

全般

1.原則として、単語の省略は行わない。
2.スコープが狭いループ変数には、i, j, kという名前をこの順序で使 用する。
3.スコープが狭い変数名には、クラス名を省略したものを使用してよい。

 

クラス・モジュール名

クラス・モジュール名は、各単語の一文字目を大文字にし、`_'などの区切 文字は使用しない。

 

メソッド名

メソッド名は、すべて小文字とし、単語の区切りに`_'を用いる。メソッ ド名には動詞の原形を使用する。

真偽値を返すメソッド名は、動詞または形容詞に`?'を付け、形容詞に `is_'は付けない。

また、破壊的なメソッドと非破壊的なメソッドの両方を提供する場合、破 壊的なメソッドには`!'を付ける。

 

定数名

クラス・モジュール名以外の定数名は、すべて大文字とし、単語の区切 りに`_'を用いる。

 

変数名

変数名は、すべて小文字とし、単語の区切りに`_'を用いる。

 

ファイル名

ファイル名は、すべて小文字とし、単語の区切りに`-'を用いる。 また、ファイル中の主な定義クラスの名前を変換したものをファイル名 に使用する。(モジュールを名前空間として使用する場合は、ディレクト リを使用して階層構造を表現する。)

 

予約語一覧

BEGIN class ensure nil self when
END def false not super while
alias defined? for or then yield
and do if redo true __LINE__
begin else in rescue undef __FILE__
break elsif module retry unless
case end next return until

 

 

 

ざっとこんな感じですかね。

詳しくはこちらを読んでもらえたらわかるかと思います。

 

第一回はここまでで終わりとしたいと思います。

お疲れさまでした。