2012-04-18 17 views
5

Sto scrivendo del codice in Visual Basic 6 e ho notato che non ho nemmeno bisogno di dichiarare variabili per far funzionare le cose.Devo dichiarare esplicitamente le mie variabili in VB6

la seguente (dichiarazione esplicita):

Dim foo As String 
foo = "Bar" 

sembra funzionare così come questo (dichiarazione implicita):

Dim foo 
foo = "Bar" 

O questo (nessuna dichiarazione):

foo = "Bar" 

So che in C# ho bisogno di dichiarare una variabile prima di usarla, e che dichiarat implicito ed esplicito gli ioni sono entrambi accettabili. So anche che in Python non si dichiarano le proprie variabili prima di usarle.

Per quanto riguarda Visual Basic 6 (e per estensione VBA) che è corretto?

Grazie

+0

+1 Una domanda molto buona! –

risposta

6

Devo dichiarare esplicitamente le variabili in VB6?

Sì. Perché?

Non solo perché è una buona abitudine o è un must ma a causa di una sola ragione principale che ho menzionato in questo post.

VB imposta la variabile su Tipo Variant. Una variabile Variante tipo può contenere qualsiasi tipo di dati dalle stringhe, ai numeri interi, agli interi long , alle date, alla valuta ecc. Per impostazione predefinita, "Varianti" sono il tipo di variabili "più lento" .

E

Come ho detto prima, se non si specifica il tipo di variabile , default VB la variabile ad essere di tipo Variant. E tu, , non vorrai farlo perché rallenterebbe il tuo codice dato che il compilatore VB richiede tempo per decidere quale tipo di variabile stai usando. Varianti dovrebbero essere evitate in quanto sono responsabili di causare possibili errori di corrispondenza di tipo " ".

Topic: Per 'Err' è umano (vedi punto 3)

Link: http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

Il link qui sopra riguarda anche altre parti relative alla codifica che si può/dovrebbe prendere cura di

HTH

+0

+1 Dichiarare le tue variabili è sempre positivo. Tuttavia, se non li dichiari, li suffix con un identificativo appropriato come $, ecc. In modo che non vengano considerati come varianti. per esempio. abc $ è una stringa, xyz e sarebbe lunga, ecc. –

9

E 'una buona HABIT.

C'è un'opzione VB chiamata Option Explicit. Con quel set su ON, quindi VB forze di dichiarare una variabile prima di utilizzarla: non più

foo = "Bar" 

che aiuta con errori di digitazione il nome della variabile più avanti nel codice ... senza che, si può typso la variabile nome, il programma viene compilato ma non funzionerà, ed è difficile da approfondire.

+0

+1. Puoi anche usare 'DefObj A-Z' in ogni modulo per rendere molto improbabile che tu accidentalmente ometti il ​​tipo scrivendo' Dim foo' senza il tipo. Complimenti a [Jim Mack] (http://stackoverflow.com/a/1905044/15639) ... Oh BTW è l'errore di battitura nella parola typo deliberate :) – MarkJ

9

In Strumenti/Opzioni, scheda Editor, selezionare la casella Richiedi dichiarazione variabile. Questo aggiungerà automaticamente l'opzione Explicit ad ogni nuovo modulo di codice.

enter image description here

direi che questo è più di una best practice; Lo considero un requisito per la sanità mentale del programmatore. L'impostazione è persistente; una volta impostato, rimane abilitato. Microsoft ha reso un'opzione perché alcune versioni precedenti di VB non disponevano della funzionalità, il che spiega anche perché è stato disabilitato per impostazione predefinita.

4

Consiglio vivamente di dichiarare sempre le variabili. Questo può essere forzato impostando Option Explicit in ogni modulo di codice. Puoi lasciare che VB6 lo faccia automaticamente andando su Strumenti-> Opzioni, nella scheda Editor seleziona Richiedi dichiarazione delle variabili.

Se non si utilizza Option Explicit, verrà creata automaticamente una variabile ogni volta che si fa riferimento a un nome di variabile precedentemente sconosciuto. Questo è un comportamento molto pericoloso, perché se si configura un nome di variabile, verrà creata una variabile vuota, causando un comportamento imprevisto del codice.

Non si dichiarare il tipo di variabili ma vorrei anche raccomandare che lo facciate. Il tipo predefinito di una variabile è Variant, che ha un piccolo overhead delle prestazioni e crea alcuni problemi se stai creando oggetti COM da usare con C++ o C# (se qualcuno lo fa più).

+0

+1. Puoi anche usare 'DefObj A-Z' in ogni modulo per rendere molto improbabile che tu accidentalmente ometti il ​​tipo scrivendo' Dim foo' senza il tipo. Complimenti a [Jim Mack] (http://stackoverflow.com/a/1905044/15639) – MarkJ

Problemi correlati