関数や変数の命名規則において、時折キャメルケースにすべきかスネークケースにすべきかで論争になるようであるが、個人的には正直なところうんざりしている部分がある。もっとも、どちらかを選んだら統一すべきではあると考えては言えるが・・・。
キャメルケースとスネークケースについてわからない方もいるかもしれないので、ここではキャメルケースとスネークケースについて説明しながら主観を述べてみたい。
キャメルケースとは
キャメルケース(CamelCase)とは、複合語の語頭を大文字にする記法で、一般的な利用例としてはマクドナルドのロゴ「McDonald’s」が挙げられる。
キャメルとは「ラクダ」の意味で、語頭の大文字がラクダのコブのように見えることが語源のようである。
プログラミングでよく用いられるキャメルケースには大きく分けて以下の2種類がある。
- パスカルケース/アッパーキャメルケース – 複合語の先頭を大文字にする(PascalCase)
- キャメルケース/ローワーキャメルケース – 複合語の先頭を小文字にする(camelCase)
上記のうち、パスカルケースはモダンなオブジェクト指向プログラミング言語のクラス名、あるいは.NET Frameworkのメソッド名やプロパティー名などで用いられている。一方、JavaやObjective-Cにおいてはメソッド名やプロパティー名などはキャメルケースが用いられている。
スネークケースとは
スネークケース(snake_case)とは、複合語の単語の間をアンダースコア「_」で区切る記法である。多くの場合は変数名や関数名としては小文字で統一、定数やマクロ定義の場合は大文字で統一するのが一般的なようである。
ちなみに、アンダースコアではなく、ハイフン「-」で記述するチェインケースというものもあるが、こちらはハイフンが減算を意味するマイナスと混同するため、ほとんどプログラミング言語では使えない。
両方が存在する意義と問題点
どちらも、ただ単純に単語を繋げただけでは可読性に劣ることへの対策として使われている。例えば、「get some data」を単純に繋いだだけだと「getsomedata」となってしまい、可読性に劣るが、キャメルケースであれば「getSomeData」、スネークケースにすれば「get_some_data」となり、単語の区別が容易にできるようになるからである。
とはいえ、一部ではキャメルケースでも可読性に劣るという主張があり、可読性という視点でも主観が分かれるのが現状のようである。これは致し方のないことではあるようだが・・・。
最後に
個人的には、キャメルケースにおいても、スネークケースにおいても、どちらでも問題ないと考えている。JavaやCocoa、
.NET Frameworkなど、命名規則がしっかりしているものについてはそれに従うのが望ましいが、そうではないものについてはそれほど意識する必要はなさそうである。
ただし、どちらかを選んだにしても、その記法は一定の法則性をつけることは必要である。特にメソッドやクラス名などでキャメルケースやスネークケースが混在しているなど法則性が乱れているものについては、かなりみっともないものになってしまうからである。
個人的にはキャメルケースもスネークケースもどちらでも問題ないが、これであれこれ言うのはナンセンスであると考えている。最も、命名規則はしっかりとして欲しいものではあるが・・・。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。