こんにちは。
>自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。
基本は、「単語で構成された、誰でも分かるような名前をつける」ということですが、VBAでも、まず、いくつか決まったものがありますから、それは、そのまま使えばよいと思います。
カウンター変数は、i,j,k ;一次的に保管する場合は、buf やtmp など、#1の方の引用先で十分だとは思いますが、旧VBで使われていたハンガリアン記法(intFl等)は、現在の.Netではマイクロソフトでは使わないようにと言われています。(理由は後で書きます)
Excel等で使われる省略形:
Office では、windows -> wn, workbook ->wb, worksheet -> sht ;ws, word -> wd, object- >obj などが使われています。これらは、小文字で使われることが多いです。
これらを称して、「コーディング規則」と言っていますが、プロ用の規則では、なるべく英語表記にするとか、決まったもの以外は、省略形は不可だといいます。しかし、アマチュアの中では、そこまでは気にすることはありません。例えば、ローマ字のzaikoではなく、inventory や stockとは言いますが、英語の得意な方に限ります。ただ、Hanniとか書くには、ちょっと格好が悪いです。
ある一定以上のレベルの人は、同じような変数や書き方になることが多いです。また、書き方も似ていますので、すぐにコードが理解できます。得てして、一定の規則に則った書き方が出来ない人で、実力ある人は見たことがありません。変数の名前付けだけでも、ある程度の実力は分かると言っても過言ではありません。
Microsoft で、VB.Netの規則ですが、このようなものがあります。
http://msdn.microsoft.com/ja-jp/library/aa291593.aspx
http://msdn.microsoft.com/ja-jp/library/h63fsef3
あまり良くない例:
http://home.att.ne.jp/zeta/gen/excel/c04p15.htm
この著者は、プログラマーとして有名な方で、業界では重鎮なのですが、この規則は古いし、プリフィックスは参考にすべきではありません。また、サフィックス記号-$などは、原則としては使ってはいけません。これら古い書き方は、VBAの将来性をにらむと、それが大きな混乱の元になるからです。
●VB6以前の命名法を使っていた方への補足(ここは非常に参考になります。)
http://dobon.net/vb/dotnet/beginner/namingrules.html
ただ、VB系の場合は、プログラミング規則は、会社独自で作ることが多いので、完全にこれだけというものはありません。
これ以外にも、
・コーディングスタイルに気をつける
大事なことは、読みやすさ(可読性)。
修正しやすいように、修正したら、それが分かるように心がける。私の場合は、改編した場所には、日付を入れます。
・大文字小文字を使い分ける
Pascal(パスカル)形式(プロシージャ名)
各単語の頭文字を大文字で記述します。
基本的には単語の接続には"-"や"_"は使いません。
例えば、"indxBackColor"や"winMsg"みたいな感じです。
Camel(キャメル)形式(変数)
前述のPascal形式に似ているのですが、最初の単語の最初の文字は小文字にします。
こっちも基本的には単語の接続には"-"や"_"は使いません。(←私自身、痛い失敗したことがあります。)
"indxBackColor"や"winMsg" とか書いた時に、indexbackcolor と書いたら、大文字・小文字の変化をしませんから、indxBackColorと書き間違えたことがすぐに分かります。
全部大文字(定数)
定数を表す時は大体、全部大文字にします。(例外は、プレフィックスのg--グローバルの意味などをつける時は、それを小文字にします。)
ただ、全部大文字なので、単語をつなぐときは、例えば、"BACK_COLOR"と、"_"を使ってつなぎます。
後は、思いつくまま、このような規則が挙げられます。
・インデント(段下げ)をする。
・データ型を表す記号($,#,!)は、用いてはいけません。
・文字列の結合を表す"&"(アンパサンド)を用い、"+"では繋がない。
・2 byte文字は、コメント以外には使わない。
・適当な場所に、コメントを書くべきだが、全部に入れないこと。
・プロパティは省略をしない。
・VBAには、予約語の禁止という規則はありませんが、ワークシート関数名やVBA関数名などは、紛らわしいので使わないこと。例:Str (Str関数という古い関数がある)
なお、VBAは、大文字・小文字自体は関係がないとは言われますが、実際の場では、大文字・小文字を間違えて、動かないということもありますから、インテリセンスを用いない手入力の部分は、まず気をつけるに越したことはありません。(インテリセンス:入力候補の表示によるオートコンプリート機能、タイプミス補正機能のこと)
最後に、ご自身で、研究してみてください。
私自身は、それだけ書かれたVB.Netの規則本を持っていますが、それを、紹介するよりも、Microsoft の専門書やサイトがありますから、そこを参考にすると良いです。ただし、参考にするのは、msdn側であって、Microsoft.Support 側は、意外にも、アマチュアの方も参加して書いているようですから、あまり参考にはしないほうがよいでしょう。
お礼
ありがとうございます。