Home > column | it > 変数名の命名規則

変数名の命名規則

我的春秋さんのエントリー『コード共有のためのネーミングルール』に触発されて、変数の命名規則について調べてみたのでその覚書。

名前の共有はコードの共有のための(複数人で同一コードを編集・転用する)重要なファクターのひとつですし、非常にいい傾向だとは思うんですけど、実際につけられている名前を見てみると、シブい顔をせざるを得ない事例が結構あるようです。

確かに。
自分を含め開発の初期段階ではある程度自分の考えた命名規則に従って変数や関数の名前を付けていくんだけど、開発途中において仕様変更や制御ロジックの修正などが度々起きると、「一応この名前を割り振っておいて取り合えずコードを修正しよう」ということをしてしまう。このような一時しのぎが繰り返されると、結果的に修正箇所が開発コード全体に波及してしまい、いざ名前を変えようとなっても手の施しようがなくなってしまう。

こんな悪循環を避けるためには、命名規則うんぬんよりも、

本当は XML か UMLのクラス図あたりでモデリングしておいて、その結果を基にスキーマを作成しておくと良いんですが(XML エディタがあれば、文法チェック+自動補完機能付きでスキーマを活かせますし)、そこまでしなくても、一人で設計するなら Post-it 付箋紙 + 紙で、スタッフミーティングなら やや大きめの Post-it + ホワイトボードで、基本構造をモデリングすると良いかも。

が大事だということです。
それでも、研究なんかだと、システムの制御ロジックを予めモデリングしてスキーマを作成しておいたとしても、研究手法の変更によって予期しないシステム変更を強いられることが多々ある。

・・・というわけで、
常々命名規則を守りながらコーディングすることは大切というわけです。
じゃ、どんな命名規則があるのかというと、代表的なものは、

Camel記法
最初の単語のみ小文字で始め、以降単語の先頭文字は大文字
例:thisIsAnExample
Pascal記法
各単語の先頭文字は大文字
例:ThisIsAnExample
アンダーバー区切り
単語は全て小文字で区切りはアンダーバー
例:thisIs_an_example

Camel記法やPascal記法は、JavaやC++のコーディング規約における命名規則として、アンダーバー区切りの命名規則はGNUコーディング規約の命名規則として見られます。
Java言語コーディング規約

複数単語の表現方法以外のところでは、意味名にその属性を示すプレフィックスをつけるというものがあります。
その種の命名規則の中で、もっとも有名でありかつ悪名高いのが、ハンガリアン記法
何で悪名高いのかというと、ひとつの変数にprefixが何個も付与された時に変数が何を意味するのか分かりずらくなるからです。

個人的には、発音できない名前は嫌いなのでハンガリアン記法は使いません。
基本的にいつもCamel記法。
でも、似たような処理をする関数や変数があると、ダラダラと名前が延々と長くなる癖があります。

短縮表記のままでも問題ありませんが、個々人が自由に命名できる class名や id名については、なるべく略記せずに、誰が見てもわかる名前をつけた方が良いでしょう。これは JavaScript の変数や関数の名前も同様です。

長くなりすぎるのも問題かと・・・
ある変数に2つの変数の足し算を格納するといった最も簡単なコードが、やたらめったら長いコードになってしまったり(自分なわけですが)すると、非常に読みずらいです。

いずれにしろ、どんな命名規則を用いようとも、

JavaScript の関数名は動詞もしくは動詞句とし、変数名・オブジェクト名は名詞もしくは名詞句で命名します。こうすることで、より我々が日常 話している自然言語に近づけますし、名前を見ただけで動作・命令(関数)なのか、情報(変数)なのかも、すぐに識別できるようになります。

これが大事なようです。
なるほど。勉強になりました。


関連記事

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://it-lab.ciao.jp/cgi/mt/mt-tb.cgi/27
Listed below are links to weblogs that reference
変数名の命名規則 from zonelog

Home > column | it > 変数名の命名規則

About
Tag Cloud
Search
Feeds
iKnow!
Link
あわせて読みたいブログパーツ あとで読む
フィードメーター - zonelog

Return to page top