ハマログ

株式会社イーツー・インフォの社員ブログ

よく知られているプログラミングの命名法

システムを複数人で開発するときに、記法や単位を一定のルールで統一します。
これを「コーディング規則」や「コーディングルール」、「コーディングスタンダード」とか呼んだりします。

ハンガリアン記法(Hungarian notation)別名ハンガリー記法

変数名やクラス名に、特別な接頭・接尾文字をつける書き方です。
ハンガリアン記法とは、この方法を提唱したチャールズ・シモニーという方が、ハンガリー出身であることに由来しています。

ハンガリアン記法には、アプリケーションハンガリアンとシステムハンガリアンの2種類があります。

アプリケーションハンガリアン

変数を単体で見た時に間違いが起きないことを目的とした記法です。例えば複数通貨を扱うシステムで、

int amount;

とした場合、変数名から「合計」ということはわかりますが、通貨の種別を判断することができません。
この問題を解決するために、日本円を扱う変数にはjpyを付与し、ユーロを扱う変数にはeurをつけるといったルール付けをおこないます。

int jpySubtotal = 1000;
int jpyTax = 80;
int jpyPostage = 500;
int jpyAmount = jpySubtotal + jpyTax + jpyPostage;

以下の様な記載は、実行前に誤りであることがわかります。

int jpyAmount = jpySubtotal + jpyTax + eurPostage;
システムハンガリアン

変数の型など、メタデータを付与する方法です。

int iAmount; // int型の変数
double dTax; // double型の変数

10年くらい前は特定の界隈でよく使われていたような気がしますが、現在ではほぼ使いません。
積極的に利用していたMicrosoftも、.NET Frameworkでは利用しないように記載しています。
https://msdn.microsoft.com/ja-jp/library/ms229045.aspx

システムハンガリアンを使わなくなった理由としては、型が定義できるのに名称に含めることが冗長であること、型の変換時に変数名まで修正するコストがかかること、IDEが発展したこともあげられます。

Leszynski命名規則

マイクロソフトアクセスで開発をおこなうときに利用するハンガリアン記法の変形で、LNC(Leszynski Naming Convention)と表記されることもあります。
オブジェクトの命名にはアプリケーションハンガリアンを用いて、フィールドの命名にはシステムハンガリアンを用います。

詳細なルールは、LNC: Wikipediaが詳しいです。

キャメル記法

複数の単語を組み合わせた名称をつけるときに、頭文字を大文字にする方法です。
名称の途中に現れる大文字がラクダのコブのように見えることからキャメル(camel:らくだ)記法と呼ばれます。

すべての単語の戦闘を大文字にする「アッパーキャメルケース(Upper Camel Case)」と、変数名の先頭を小文字にし、単語同士の接続箇所先頭を大文字にする「ロウワーキャメルケース(Lower Camel Case)」の2種類があります。

アッパーキャメルケース(Upper Camel Case, UCC)

Pascal 形式とも呼ばれるようです。

int AmountWithTax = 0;

function GetPostage(){}
ロウワーキャメルケース(Lower Camel Case, LCC)

JavaやPHPで広く使われている記法です。

int amountWithTax = 0;

function getPostage(){}

スネーク記法

単語間をアンダースコアで接続する記法です。地を這う蛇のような見た目になることから命名されました。

int count_of_members;

チェーン記法

単語間をハイフンで接続する記法です。プログラミング界隈ではあまり見ることはありませんが、CSSなどで利用されていることがあります。
ハイフンで区切ったルールを採用する場合、たいていの入力エンジンでは1つの単位とみなされず、ダブルクリックで選択できないので不便だったりします。

int number-or-rows;

アッパー記法

すべての文字列を大文字で表します。
大文字とアンダースコアで定義され、定数の定義などに利用されることが多いように思います。

int UPPER_CASE;
int NUMBER_PER_PAGE = 50:

まとめ

ルールに名前がつくことでコミュニケーションが円滑になるのでぜひ覚えましょう。

おわり。

コーディングルールプログラミングプログラム命名法則記法

  kaneko tomo   2015年9月24日


関連記事

Laravel EloquentのソートでNULLを最後に持ってくる(MySQL)

Laravel5系+MySQL5のはなし。 Laravel+Eloquentのプ…

ApacheでContent Security Policy(CSP)を設定する

先日、脆弱性検査ツールで以下のレポートが出力されました。 Content-Sec…

pom.xmlからEclipseプロジェクトへ

こんにちは。S.Iです。 Apache Maven(アパッチ メイヴァン/メイヴ…


← 前の投稿

次の投稿 →