プログラミングの命名規則

プログラミング全般

命名規則(命名規約)とは

プログラミングには、命名規則(命名規約)があります。

「変数名」、「関数名」はもちろんのこと、言語によっては「クラス名」、データベースにも「テーブル名」や「フィールド名」など、多くのものに名前を付けることになります。

プログラムを記述する「ファイル」そのものにも名前が必要ですし、HTMLやXMLといったマークアップ言語にも属性の名前を付ける機会があります。

プログラミングで名前を付ける際のルールを「命名規則」(命名規約)と呼びます。

命名規則の種類

命名規則にはいくつかの種類があります。

言語やプロジェクトにより、使用される命名規則は変わります。

キャメルケース (Camel Case)

キャメルケースには、小文字から始まるローワー・キャメルケース(Lower Camel)と大文字から始まるアッパー・キャメルケース(Upper Camel)の2種類があります。

たとえば、「Camel Case」をローワー・キャメルで記述すると次のようになります。

camelCase

2つ目の単語の先頭文字だけが大文字になっており、スペースを使うことなく単語の区切りが分かりやすい表記になっていますね。

続いて、アッパー・キャメルで記述すると次のようになります。

CamelCase

最初の単語の先頭文字も大文字になりました。

※ アッパー・キャメル(Upper Camel)は、パスカル(Pascal)と呼ばれる場合もあります。

キャメルとは、「ラクダ」を意味する英単語。

単語の区切りを大文字にすることで、それがラクダのコブのように盛り上がって見えることから「キャメル」ケースと名付けられたのですね。

キャメルケースは、Javaを始めとする多くのプログラミング言語で標準的に使用される、大変重要な命名規則です。

スネークケース (Snake Case)

スネークケースは、単語と単語の間をアンダーバー(アンダースコア)で区切る記法です。

たとえば、「Snake Case」をスネークケースで記述すると次のようになります。

snake_case

スペースの代わりにアンダーバー「_」を使用することで、違和感なく読みやすい記述にできます。

スネークとは、「ヘビ」を意味する英単語。

単語の区切りにアンダーバーを使うことで、ラクダと違って起伏がなくニョロニョロ繋がって見えることから「スネーク」ケースと名付けられたのですね。

スネークケースは、主にデータベースの構成要素(データベース名、テーブル名、カラム名)の命名に使用されます。

チェーンケース (Chain Case)

チェーンケースは、単語と単語の間をハイフンで区切る記法です。

たとえば、「Chain Case」をチェーンケースで記述すると次のようになります。

chaincase

スペースの代わりにハイフン「-」を使用することで、スネークケース同様、違和感なく読みやすい記述にできます。

チェーンとは、鎖を意味する英単語。

単語の区切りにハイフンを使うことで、ネックレスの鎖のように見えることから「スネーク」ケースと名付けられたのですね。

別名、ケバブケースとも呼ばれます。各単語が肉でハイフンを串に見立てたケバブ(串焼き)のように見えるからですね。覚えておきましょう。

チェーンケースは、主にHTMLの属性などの命名に使用されます。

命名規則以外に留意すべきポイント

これは命名規則とは少し観点が異なりますが、同じぐらい重要な考え方です。

対象物に相応しい名前を付ける

例えばJavaScriptで以下のようなコードを目にしたら、どのように感じますか?

if ( userName < 20 ) {
  alert("未成年です!");
}

ここで少し、プログラミング言語についての本質的なお話をします。

皆さんが学習している(あるいは学習しようとしている)のは、プログラミング言語ですね。
プログラミング言語です。

そう、「言語」の学習、つまりは言語学なのです。
言語とは言いかえれば言葉であり、言葉で書かれたものは文章です。

英語や日本語と同じ言語であって、意思の疎通相手がコンピューターだという違いがあるだけです。
プログラムは、プログラミング言語で記述されたもの。(当たり前ですね)

つまりプログラムは、外国語を読むとき同様に、完全な日本語の文章に翻訳できるものであると言えます。

その考え方に則って、先ほどのプログラムコードを日本語の文章として訳してみましょう。

if ( userName < 20 ) {
  alert("未成年です!");
}

もしも、ユーザー名が20未満ならば
 「未成年です!」とアラート表示する。

違和感がありませんか?
「ユーザー名が20未満」って…。となりませんか?

このような命名は避けるべきです。

変数は「名詞」、関数は「動詞」で命名する

プログラミングにおける「変数」とは?
 👉 情報を入れておくための入れ物である。

この定義から考えると、変数とは情報が入っているモノなので、名詞で命名すべきです。

それに対し、プログラミングにおける「関数」とは?
 👉 処理のまとまり。機能である。

この定義から考えると、関数とは処理であり、動作するので、動詞で命名すべきです。

let firstName = "Taro";    // 名前 👈名詞
let familyName = "Yamada"; // 苗字 👈名詞

function showFullName() {  // フルネーム表示する 👈動詞
  alert("fistName" + " " + "familyName");
}

命名規則の目的

命名規則は何のためにあるのか、どのようなメリットがあるのかをリストアップします。

  • コードの可読性が向上する
  • プログラム全体のメンテナンス性が向上する
  • バグを未然に防止しやすくなる
  • コードをレビューしやすくなる

システム開発、特にそれが仕事であればなおさら、一人で組むことは少ないでしょう。多くの場合、チームでシステムを開発していきます。

メンバーそれぞれが勝手な規則の元に名前を付けてしまうと、何か変更しなければならなくなった場合や、他人のコードをレビューする場合などに支障をきたすことになります。

また、自分で自分のコードを読み直したり、修正する場合においても、命名規則がバラバラになっていると、時間が経って見直した時に対象の箇所を見つけづらくなったり、修正ミスを起こしやすくもなります。

命名規則は非常に大切なルールなので、早い内から心がけ、習慣化しておくことを強くオススメします。

コメント

タイトルとURLをコピーしました