5

私は Visual Basic 6 でいくつかのコードを書いていますが、機能するために変数を宣言する必要さえないことに気付きました。

以下 (明示的な宣言):

Dim foo As String
foo = "Bar"

これと同じように機能するようです(暗黙の宣言):

Dim foo
foo = "Bar"

またはこれ(宣言なし):

foo = "Bar"

C# では、使用する前に変数を宣言する必要があり、暗黙的宣言と明示的宣言の両方が受け入れられることを知っています。また、Python では、変数を使用する前に変数をまったく宣言しないことも知っています。

Visual Basic 6 (および拡張 VBA) に関して、どちらが適切ですか?

ありがとう

4

4 に答える 4

9

それは良い習慣です。

OptionExplicitと呼ばれるVBオプションがあります。これをONに設定すると、VBは、使用する前に変数を宣言するように強制します。これ以上はありません。

foo = "Bar"

これは、コードの後半で変数名を誤って入力するのに役立ちます...それがないと、変数名を入力でき、プログラムはコンパイルされますが機能しません。それを掘り下げるのは困難です。

于 2012-04-18T17:38:34.043 に答える
9

[ツール/オプション] の [エディター] タブで、[変数の宣言が必要]チェックボックスをオンにします。これにより、すべての新しいコード モジュールにOption Explicitが自動的に追加されます。

ここに画像の説明を入力

これは単なるベスト プラクティスではありません。私はそれをプログラマーの正気の要件と考えています。設定は永続的です。一度設定すると、有効のままになります。一部の古いバージョンの VB にはこの機能がなかったため、Microsoft はこれをオプションにしました。これは、デフォルトで無効になっている理由も説明しています。

于 2012-04-18T18:04:41.837 に答える
7

VB6 で変数を明示的に宣言する必要がありますか?

はい。なんで?

それが良い習慣である、または必須であるという理由だけでなく、この投稿でも言及した主な理由が 1 つだけあるためです。

VB は、変数を Variant 型にデフォルト設定します。Variant 型の変数は、文字列から整数、長整数、日付、通貨など、あらゆる種類のデータを保持できます。デフォルトでは、「Variant」は「最も遅い」タイプの変数です。

前述したように、変数の型を指定しない場合、VB は変数を既定で Variant 型に設定します。また、VB コンパイラが使用している変数の種類を決定するのに時間がかかるため、コードの速度が低下するため、これは望ましくありません。バリアントは、「型の不一致エラー」を引き起こす可能性があるため、避ける必要があります。

トピック: 「Err」するのは人間です (ポイント 3 を参照)

リンク: http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

上記のリンクは、コーディングに関連する他の部分についてもカバーしています。

HTH

于 2012-04-18T23:17:45.273 に答える
4

常に変数を宣言することを強くお勧めします。これは、各コード モジュールで Option Explicit を設定することで強制できます。[ツール] -> [オプション] に移動し、[エディター] タブで [変数の宣言が必要] をオンにすると、VB6 に自動的に実行させることができます。

Option Explicit を使用しない場合、未知の変数名を参照するたびに変数が自動的に作成されます。これは非常に危険な動作です。変数名を間違って入力すると、空の変数が作成され、コードに予期しない動作が発生するためです。

変数の型を宣言する必要はありませんが、宣言することもお勧めします。変数の既定の型は Variant です。これはパフォーマンス オーバーヘッドが小さく、C++ または C# で使用する COM オブジェクトを作成している場合に問題が発生します (誰かがそれを行う場合)。

于 2012-04-18T18:15:38.350 に答える