2012-04-18 12 views
5

Escribo código en Visual Basic 6 y he notado que ni siquiera necesito declarar variables para que las cosas funcionen.Debería declarar explícitamente mis variables en VB6

La siguiente (declaración explícita):

Dim foo As String 
foo = "Bar" 

Parece que funciona tan bien como esta (declaración implícita):

Dim foo 
foo = "Bar" 

O esto (sin declaración):

foo = "Bar" 

Lo sé en C# Necesito declarar una variable antes de usarla, y esa declarat implícita y explícita iones son aceptables. También sé que en Python, no declaras tus variables antes de usarlas.

En lo que respecta a Visual Basic 6 (y por extensión VBA) ¿cuál es el adecuado?

Gracias

+0

+1 Una muy buena pregunta! –

Respuesta

6

¿Debo declarar explícitamente mi variables en VB6?

Sí. ¿Por qué?

No solo porque es un buen hábito o es obligatorio, sino también por una sola razón principal que mencioné en esta publicación también.

VB predetermina la variable a ser tipo Variant. Una variable tipo Variable puede contener cualquier tipo de datos de cadenas, enteros, números enteros largos , fechas, moneda, etc. Por defecto, "Variantes" son el tipo de variables "más lento".

Y

Como ya he mencionado anteriormente, si no se especifica el tipo de la variable , por defecto VB la variable a ser de tipo Variant. Y usted no querría eso, ya que ralentizaría su código ya que el compilador de VB toma tiempo para decidir qué tipo de variable está utilizando. También se deben evitar las variantes , ya que son las causantes posibles de "Errores de errores de tipo".

Tema: Para 'Err' es humano (véase el punto 3)

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

El enlace anterior también cubre otras partes relacionadas con la codificación que uno puede/debe tomar cuidado de.

HTH

+0

+1 Declarar sus variables siempre es bueno. Sin embargo, si no los declara, agréguelos con el identificador apropiado como $, etc. para que no se asuman como variante. p.ej. abc $ es string, xyz y sería largo, etc. –

9

Es una buena HÁBITO.

Hay una opción de VB llamada Option Explicit. Con ese conjunto en ON, a continuación, VB le obliga a declarar una variable antes de usarla: no más

foo = "Bar" 

que ayuda a escribir mal el nombre de variable adelante en el código ... sin eso, puede typso la variable nombre, su programa se compila pero no funcionará, y es DIFÍCIL descubrirlo.

+0

+1. También puede usar 'DefObj A-Z' en cada módulo para que sea muy poco probable que accidentalmente omita el tipo escribiendo 'Dim foo' sin el tipo. Felicitaciones a [Jim Mack] (http://stackoverflow.com/a/1905044/15639) ... Oh, por cierto es el error tipográfico en la palabra error deliberado :) – MarkJ

9

En Herramientas/Opciones, pestaña Editor, marque la casilla Requerir declaración de variable. Esto agregará automáticamente Option Explicit a cada nuevo módulo de código.

enter image description here

Yo diría que esto es más que una buena práctica; Lo considero un requisito para la cordura del programador. La configuración es persistente; una vez establecido, permanece habilitado. Microsoft lo hizo una opción porque algunas versiones anteriores de VB no tenían la función, lo que también explica por qué estaba deshabilitada de forma predeterminada.

4

Le recomiendo que siempre declare sus variables. Esto se puede forzar estableciendo Option Explicit en cada módulo de código. Puede dejar que VB6 lo haga de manera automática yendo a Herramientas-> Opciones, en la pestaña Editor, marque Requerir declaración de variables.

Si no utiliza Option Explicit, se creará automáticamente una variable para usted cada vez que haga referencia a un nombre de variable previamente desconocido. Este es un comportamiento muy peligroso, porque si escribe mal un nombre de variable, se creará una variable vacía para usted, lo que provocará un comportamiento inesperado de su código.

Usted no tiene tiene que declarar el tipo de sus variables, pero también le recomiendo que lo haga. El tipo predeterminado de una variable es Variant, que tiene una pequeña sobrecarga de rendimiento y crea algunos problemas si está creando objetos COM para ser utilizados por C++ o C# (si alguien más hace eso).

+0

+1. También puede usar 'DefObj A-Z' en cada módulo para que sea muy poco probable que accidentalmente omita el tipo escribiendo 'Dim foo' sin el tipo. Felicitaciones a [Jim Mack] (http://stackoverflow.com/a/1905044/15639) – MarkJ

Cuestiones relacionadas