ブロックチェーン・AI・システム開発の株式会社INDETAIL

命名規則:キャメルケース 対 スネークケース

2015.11.19
INDETAIL

こんにちは、農道JSです。
もう1カ月でクリスマスになりますので、
皆様はクリスマスツリーを用意したり、プレセントの買い物をしたり、
プログラミングの命名規則について議論したり、だと思います。
後者はプログラマー限定の話だと思いますが、それについて少し話をしたいと思います。

■ 登場人物
命名規則の中で、色々あります。
例えば、lowercase・UPPERCASE・lisp-case・Train-Case・等ありますが、
プログラミングの世界で、主な登場人物はCamelCase(キャメルケース)と
snake_case(スネークケース)だと思います。
上記の命名規則の別名もあるし(lisp-case = spinal-case、等)、
Microsoftによると最初の言葉が大文字だとPascalCaseになる等のような事もありますが、
今回の話では
● 要素語の最初の文字を大文字で書くとCamelCase
● 要素語を小文字で書いて、アンダースコアでつなげるとsnake_case
とさせて頂きます。そして、ある程度主観的の話になりますが、
それぞれの(思われている)メリット・デメリットを紹介したいと思います。

■ CamelCase
メリット
⊕ より短い
スペースがなくなったおかげで文字数が少なくなります。
⊕ 人気があるプログラミング言語やライブラリで使われている
例えば、Java・JavaScript・C++・Microsoft .NETのような
良く使われているプログラミング言語は基本CamelCaseです。
デメリット
⊖ 略称は分かりにくくなる
「US DNS Server」は「UsDnsServer」になってしまいます。
⊖ その他の読みにくいパターンがある
例えば、「is_illegal_inline」は「IsIllegalInline」より読みやすいです。

■ snake_case
メリット
⊕ コンスタントの書き方との統一感
コンスタントは基本大文字とアンダースコア
(いわゆる「SCREAMING_SNAKE_CASE」)で書かれているので、
それとの統一感があります。
⊕ 読む速度が早い
アメリカの大学の研究によるとsnake_caseは(少なくともCamelCaseより)
速く読めます。
デメリット
⊖ スペースは判別しにくくなる
「one_two_three_four five_six_seven」を「OneTwoThreeFour FiveSixSeven」と
比較すると、後者のスペースは見つけやすいです。
⊖ アンダースコアのタイピング速度が遅い
タイピング速度が速くなる程、差が小さくなりますが、
厳密で言うとアンダースコアを書くのは大文字より時間がかかります。

■ 結論
上記以外のメリット・デメリット(CamelCaseはiPhoneやMasterCardのような
製品名で使われる為、かっこいと思われている、等)もありますが、
自分の個人的な意見にしかならないですが、

● ルールをはっきり決めるほうが良い
● 対象のプログラミング言語やフレームワークのスタンダードと合わせるほうが良い
● 特別な理由無しで既存のコードベースで開発し始めると、
無理やり自分の好きなやり方を押し付けるのは宜しくない

だと思っています。

関連タグ:

コメントを残す