中級者のためのExcel エクセルマクロVBA入門:コーディング規約を作る
ちょこちょこ書いているので、ペースは落ちています。大体言いたいことはもう書いてしまっている。というのもありますが・・・同じこと何度も別の記事で書いてもしょうがないしなぁ・・・なんて最近考えています。
んで今日はコーディング規約のお話。
コーディング規約っている?
結論から言えば、「絶対必要」です。これは1人で開発しても複数で開発しても同じです。コーディング規約は自分が開発する場合、他人が開発する場合、どちらも目的は
プログラムをわかりやすくするために重要
ということになります。
規約がないとどうなるか?
規約がないとおそらくですが、これはこれはメソッドなのか?変数なのか?定数なのか?オブジェクトなのか?もおそらく不明で非常にわかりにくいものになってしまいます。例でやってみますか・・・
Private const k = 1 Public Sub output() sim = k sub_int = k + ressout() End Sub
これみて、ressoutが関数なのか?どこにあるものなのか?とかどういう名前のルールなのかもないため非常にわかりにくいものになっています。きちんとコーディング規約を作ることでプログラムが非常に見やすいものになるのです。
コーディング規約例
コーディング規約には以下のようなものがあります。あくまで一例です。
<全般>
・Worksheet、Workbookへのコード入力は禁止(イベントプロシージャは例外)。
・コードは標準モジュール内に記述すること。
・ループのネストを深くしないこと。
3階層を目安としてそれ以上になる場合は、別プロシージャに切り出すこと
・Goto文は使用禁止。(On Error Gotoは可)
・変数の宣言を必須とする(各モジュールの先頭に、Option Explicitを追加)
・基本的に使用するシートにはすべてオブジェクト名を付けること
Sheet1というまま使用しないこと。
例)設定シート→shtConfig
メニューシート→shtMenu
<変数・定数・プロシージャについて>
・スコープと型は、必ず定義すること。
・スコープは必要最小限とし、Public型の多用は避けること。
・変数名は小文字から始まるLowerCamelCaseで書くこと
カウンタは例外とする。(i,j,cntなど)
・変数のプリフィクスは任意とする
・略語はなるべく避け長くてもよいので意味のわかるようにすること。
・定数は略語をなるべく避け、すべて大文字で単語ごとにアンダースコア(_)でつなぐ
・無意味に2次元より多い配列の使用は避けること。
・数値、文字列ともに、リテラル値の直打はなるべく避けて、定数(Const宣言)を使用すること。
なお、以下の値は定数宣言を必須とする。
1. Excel関連の値 (列番号、行番号、(固定の)ファイル名、シート名、セル名など)
2. メッセージの文言
・プロシージャ名は大文字から始まるUpperCamelCaseで記述し、動詞から始めること。
例)
受講者データ登録のプロシージャ
Sub InsertLernerData()
テーブル削除のプロシージャ
Fuction DeleteTable(byVal tableName As String)
・プロシージャをコールする際にはモジュール名から記載すること
例)
mdlmain.OpenDirDialog(cellName, title)
<注釈について>
・分かり難い部分を中心に、適宜入れること。
・比較的分かりやすいコードの場合は任意とする。
しかし、基本方針としてコメントは多ければ多いほどよい。できるだけ記載すること。
・一文またブロックごとに記載を推奨。
・コメント記載の際に'の後に半角スペースを入れることを推奨しているが、
記述生産性を上げるための措置として、このルールについては任意とする。
基本日本語でコメントを入れるため、全角/半角の切り替えがめんどくさい。
積み重なると生産性に影響するため。
例)
'エラーメッセージを表示する(←任意)
MsgBox(ERR_MESSAGE)
・各モジュールファイル、クラス、シートごとに以下のコメントを先頭に記載すること
ざっとですが、他にも色々とわかりやすくするために規約を作ることもあります。
規約は守る!
規約は決めたら必ず守ります。こうすることで出来上がるプログラムの「品質」をある程度ではありますが一定に保つことができるのです。
今日はここまで!
かしこ