命名規約というか、Railsをいじっていてこうやるとわかりやすいなぁ~と思ったことを書きます。


【背景】
RailsではDBのカラム名やViewのファイル名などがそのままControllerで使用できます。
その為開発時に煩わしい宣言などを無用にしています。
これが、開発速度の向上につながります。
しかし分かりにくい一面もあります。


例えば、DB名は大抵においてキャメルケース(*1)は使用しません。
(DBによって大文字小文字を判別しないため、実質キャメルケースは使えない場合が多い。)
するとDBのカラム名は“test_data”等のになります。
しかし、Java等の命名規約を元にRubyを書いていくと変数名は“testData”のようになります。


プログラムコード書くと・・・
自作クラス:
ObjectData.testData = "テスト"
自動生成されたモデルクラス:
ObjectData.test_data = "テスト"


のようになり、見栄えが悪くなります。
また、自動生成されたメソッドも
ObjectData.find_by_test_data_and_id(testData,id)
のようになり、やはり見栄えが悪くなります。


このような状況で何も考えずにプログラムを書いていくと、自分の作ったクラスにキャメルケースとキャメルケース以外のものが混在して大変混乱しました。
と言う背景を元に考えたのが、今回の命名規約です。


【命名規約解説】
○コントローラー(ファイル名)
ファイル名の命名規約は基本的にRailsに沿っています。

なのでViewのフォルダ名+Controllerがになるでしょう。


○コントローラー(コード)
クラス名はファイル名と同様にしておく事を推奨します。
メソッド名は基本的にローワーキャメルケースで作るべきでしょう。
ただし、viewのファイル名と連動するメソッド名は“test_data"のような名前が良いかと思います。
何故かと言うと一目でviewと連動しているクラスであるか、違うかが分かるからです。


また、viewからPOST(GET)されるが、そのメソッド内で他のview画面を表示するメソッドは“testData”のような命名が良いと思います。


分かりにくいかもしれませんが、一応イメージ
touroku_formメソッド(登録画面表示処理)

touroku_form.rhtml(登録画面)

tourokuFormメソッド(登録処理)

         [失敗]⇒touroku_formメソッド(登録画面表示処理)
[成功]
top_formメソッド(トップ画面表示処理)

top_form.rhtml(トップ画面)


また、配置も上部はviewと連動しているメソッドで中央がPOSTで受け取って他のviewに回すメソッドを配置するとわかりやすくなるのではないかと思います。
(画面から呼ばれないメソッドは全てPrivateメソッドとして、下部に配置する。命名はキャメルケースにする。)


○モデル(ファイル名)
テーブル名の単数形です。
基本的には“test_data”のようになると思います。


○モデル(コード)
私が初期に勘違いしていたのですが、Railsがマッピングるするのはクラス名ではなくファイル名です。
なので、クラス名はアッパーキャメルケースで命名することが推奨されます。
(アッパーキャメルケースじゃないと都合が悪い場合もあるので強く推奨いたします。)
また、ここでDBのカラム名にエイリアス(別名)をつける事も検討しましたが、それを行うと生産性に影響があるためDBのカラム名はそのままにしておく。
ただし、本コード内で新たに作るメソッドや変数名はローワーキャメルケースにする。
意図すべきところは、外部と連携している変数(メソッド)であるか、否かを一目でわかりやすくする事です。


○ビュー(ファイル名)
上記で説明したとおり、“test_data”のようにします。
(パーシャルの場合は自由だが、“_test_data”が合う気がする。)


【まとめ】
○コントローラー
ファイル名:

キャメルケース(Viewに依存)


クラス名:
アッパーキャメルケース


メソッド名:
viewと連携しているものは“test_data”の形式
viewから呼ばれるが、他のコントローラーを呼ぶ場合はアッパーキャメルケース
上記以外は全てPrivate(Protected)メソッドとしてアッパーキャメルケース
記述順番は上記の通り


○モデル
ファイル名:
DBのテーブル名
(DBはテーブル名もカラム名も“test_data”のような設計にする。また、プライマリーキーは“id”一つにする。)


クラス名:
DBのテーブル名をアッパーキャメルケースで表示する。


メソッド名(変数名):
ローワーキャメルケース

※ただし、テーブルが違うがカラム名が同じなどでDB上のポリモルフィズムを使う場合は別とする。


○ビュー
ファイル名:
“test_date”の形式にする。
(パーシャルはRailsに準ずる。)


これらは、私が作っていて思った点です。
自然とこのような形式になっている人も居ると思いますし、もっといい方法があるかもしれません。
もう少し研究して良い方法が見つかったら文献に収めます。
良かったら参考にして下さい。





*1・・・頭文字が大文字で後は小文字を言う文字列を連結して出来た変数名。大文字が「らくだのこぶ」のように見えることからの付いた名前です。


・アッパーキャメルケース
例)TestDataCode


・ローワーキャメルケース
例)testDataCode