和風スパゲティのレシピ

日本語でコーディングするExcelVBA

キャメル記法とハンガリアン記法の違い

変数・関数などの名づけ方の種類(ルール)である、
キャメル記法とハンガリアン記法の違いを説明します。

同じところ

どちらも変数名・関数名を名付ける際のルールです。

違うところ

とりあえずそれぞれの記法の目的から説明しますと、

  • 「単語の区切りを分かりやすくする」ためのルールがキャメル記法
  • 「どんな変数かを分かりやすくする」ためのルールがハンガリアン記法

です。


留意事項ですが、この二つは着眼点も目的も全く違うものです。

ご質問をいただいたため「○○と△△の違い」カテゴリにあげましたが、
そもそもどんな違いがあるのかを考えるような並列関係ではないということを、まず認識した上で以降を読み進めてください。


例えば「りんごの価格」を計算するための変数を作るとしましょう。

この変数名はもちろん

Dim りんごの価格 As Long

でいいと思いますが、開発チームに外人さんがいるなどの理由で英語の変数名を付ける必要がある場合は、しょうがないのでapplepriceと名付ける必要があります。


この時、半角スペースが使えない対策として、

Dim ApplePrice As Long

と、各単語の頭文字を大文字にすると、単語の区切りが見やすいですよね?

まずはこのルールを「キャメル記法」と呼びます。


次にハンガリアン記法ですが、こちらは理屈よりも、実物を見た方が早いです。

Dim lngApplePrice As Long

このように、Long型であるということを変数名でも明示するために、
変数のデータ型を頭につけるルールが「ハンガリアン記法」です。

使い分け

前述の通り、そもそも両者は着眼点も目的も全然違うので、
使い分けを考えるものではありません。

というか、

Dim lngApplePrice As Long

これはどっちも使っていますからね。


この違いが気になった方は「記法」という和訳で混乱してしまったのかもしれません。

しかし元の用語を見ますと、camel case と hungarian notation なので、
そもそも「記法」の元の英単語も違います。

「キャメル記法」という表現自体が、もしかしたら一般的ではなく、
キャメルケース」と呼んでいる事の方が多いように思います。

あわせて覚えてあげてください。


ちなみに、これらの命名規則を実際に使用する際は注意が必要です。

キャメルケース(camelCase)はとても一般的な記法であり、
ExcelVBAでもメジャーな命名規則ですので、ガンガン使ってください。


対してハンガリアン記法は、今ではあまり推奨されていません。

嫌われる理由は適当に調べてみてください。
「別に要らないし、面倒なだけでしょ?」みたいな感じです。

確かにりんごの価格がLong型っていうのは、言わんでもわかりますからね。


しかしこのハンガリアン記法、実は2種類存在します。


先ほどのりんごの価格を、ただ整数:lngと説明するのではなく、
どんな整数なのかもしっかり説明するために、 

Dim yenApplePrice As Long

と名付けてみましょう。

これで価格の単位が円であることを示すことができます。


これは「りんごの価格」では無かった情報ですし、

yenApplePlice + dolLemonPrice

と書いてあると、「あれ?バグじゃね?」と気づくことができます。


こちらの「変数の意味をつけよう」タイプを「アプリケーションハンガリアン
先ほどの「変数の型をつけよう」タイプを「システムハンガリアン

と呼びます。

後者は上で述べた通り割と嫌われていますが、前者はそこそ認められているようですので、気が向いたら覚えてあげてください。


よろしければこちらの記事をどうぞ。

www.limecode.jp