MSDN ライブラリ Visual Studio 6.0
オブジェクトだけでなく、定数や変数にも適切な名前付け基準が必要です。ここでは、Visual Basic がサポートする定数と変数に関する名前付け基準の推奨例を示します。また、データ型と適用範囲の識別についても説明します。
変数は、できるだけ適用範囲が狭くなるように定義します。グローバル (Public) 変数を使うと、状態が複雑になり、アプリケーションのロジックがわかりにくくなる可能性があります。また、コードの再利用や保守も困難になります。
次の表は、Visual Basic の変数の適用範囲の一覧です。
適用範囲 | 宣言 | 参照できる範囲 |
プロシージャ レベル | Sub または Function プロシージャ内で ‘Private’ | 宣言したプロシージャ内 |
モジュール レベル | フォーム モジュール (.frm) または標準モジュール (.bas) の宣言 (Declare) セクションで ‘Private’ | フォームまたは標準モジュール内のすべてのプロシージャ |
グローバル | 標準モジュール (.bas) の宣言セクションで ‘Public’ | アプリケーション全体 |
Visual Basic アプリケーションでは、グローバル変数を使うのは複数のフォームでデータを共有する方法がほかにない場合に限定します。グローバル変数を使用する場合は、変数を機能によってグループ化し、すべてのグローバル変数を 1 つのモジュールで宣言する方法をお勧めします。このモジュールには、Public.bas のように目的を示す名前を付けます。
コーディング時には、できるだけコードをモジュール化して記述することをお勧めします。たとえば、アプリケーションがダイアログ ボックスを表示する場合は、このダイアログ ボックスの動作に必要なコントロールとコードをすべて 1 つのフォームに収めます。こうすると、アプリケーションのコードがコンポーネント化され、実行時のオーバーヘッドが最小限になります。
プロシージャと関数は、引き渡されるオブジェクトだけ (グローバル変数を除く) を操作します。グローバル変数は引き渡す必要はありません。プロシージャ内で使用するグローバル変数は、プロシージャの先頭 (宣言セクション) に記述する必要があります。また、引き渡された引数の値を明示的に変更する場合以外は、ByVal を指定して Sub プロシージャや Function プロシージャに引数を渡します。
変数の適用範囲のプリフィックス
プロジェクトのサイズが大きくなると、使用している変数の適用範囲を認識することがより重要になります。データ型を示すプリフィックスの前に適用範囲を示すプリフィックスを 1 文字付けると、変数名をあまり長くせずにその変数の適用範囲を識別することができます。
適用範囲 | プリフィックス | 例 |
グローバル | g | gstrUserName |
モジュール レベル | m | mblnCalcInProgress |
プロシージャ内 | なし | dblVelocity |
標準モジュールまたはフォーム モジュールで変数を Public として宣言すると、この変数の適用範囲はグローバルになります。標準モジュールまたはフォーム モジュールで変数を Private として宣言すると、この変数の適用範囲はそれぞれ “モジュール レベル” になります。
メモ この技法を有効に活用するには、一貫性を持たせることが大切です。Visual Basic の構文チェックでは、モジュール レベルの変数が “p” で始まっていてもエラーは検出されません。
定数
定数名の本体部分には大文字と小文字の両方を使用し、各単語の先頭を大文字にします。標準の Visual Basic 定数名にはデータ型や適用範囲の情報は含まれませんが、ユーザー定義の定数には、int、str、g、m などのプリフィックスを付けると、定数の値と適用範囲がわかりやすくなります。定数名には変数と同じ基準を適用します。次に例を挙げます。
mintUserListMax 'ユーザー リストの最大エントリ数
'(整数値、モジュール内で有効)
gstrNewLine '新規改行文字
'(文字列、アプリケーションでグローバル)
変数
変数には、データ型を示すプリフィックスを付けます。特にプログラムが大規模の場合は、プリフィックスを拡張して変数の適用範囲を示すようにすることもできます。
変数のデータ型
変数のデータ型を示すには、次の表に示したプリフィックスを使用します。
データ型 | プリフィックス | 例 |
ブール型 (Boolean) | bln | blnFound |
バイト型 (Byte) | byt | bytRasterData |
Collection オブジェクト | col | colWidgets |
通貨型 (Currency) | cur | curRevenue |
日付型 (Date) | dtm | dtmStart |
倍精度浮動小数点数型 (Double) | dbl | dblTolerance |
エラー値 | err | errOrderNum |
整数型 (Integer) | int | intQuantity |
長整数型 (Long) | lng | lngDistance |
オブジェクト型 (Object) | obj | objCurrent |
単精度浮動小数点数型 (Single) | sng | sngAverage |
文字列型 (String) | str | strFName |
ユーザー定義型 | udt | udtEmployee |
バリアント型 (Variant) | vnt | vntCheckSum |
変数とプロシージャの用途を説明する名前
変数やプロシージャの名前の本体部分には大文字と小文字の両方を使い、用途を説明するのに必要なだけの長さにします。また、関数の名前は InitNameArray や CloseDialogIn のように動詞で始めます。
頻繁に使用する用語や長い用語については、省略の基準を定めて、名前を適度な長さにすることをお勧めします。一般に、変数名が 32 文字を超えると、VGA ディスプレイでは読みにくくなります。
省略形を使用する場合は、必ずアプリケーション全体で統一します。たとえば、プロジェクト内に Cnt と Count の両方の表記が存在すると、混乱が生じる可能性があります。
ユーザー定義型
ユーザー定義型を多数使用する大規模なプロジェクトでは、それぞれの型に固有の 3 文字のプリフィックスを付けると便利です。このプリフィックスの先頭が “u” であれば、ユーザー定義型を扱うときに見つけやすくなります。たとえば ucli は、ユーザーが定義した Client 型の変数のプリフィックスとして使うことができます。
コメント