Una variable es una ubicación de memoria cuyo valor puede variar a lo largo del funcionamiento de un programa. Una variable puede contener cualquier valor de tipo de datos. Se puede cambiar el valor de una variable en cualquier momento. Esta opción permite supervisar el estado de cualquier elemento que cambie durante el funcionamiento de una aplicación. Las variables sólo existen cuando se está ejecutando una aplicación o en la sesión de Visual FoxPro en la que se han creado. El tipo de datos de una variable o un elemento de matriz está determinado por el valor almacenado en la variable o elemento de matriz.
Las variables de Visual FoxPro tienen escritura débilmente tipada "weakly typed". Esto significa que aunque a una variable se le puede asignar un valor específico, no está restringido para guardar solamente valores de un tipo en específico. En pocas palabras, las variables en Visual FoxPro tienen apariencia de camaleón con su capacidad de adaptarse al color del fondo. Debido a que Visual FoxPro es un lenguaje orientado a datos, tiene sentido permitir que las variables (especialmente matrices) sean de débil tipeo para que los datos se puedan transferir libremente entre las tablas y la memoria. Sin embargo, esto requiere un proceder más disciplinado por parte de los desarrolladores para evitar la confusión al trabajar con el código.
Tipos de Datos en Visual FoxPro
Todos los datos de Visual FoxPro tienen un tipo, como una descripción de los valores permitidos, y el intervalo y tamaño de los valores. Las variables y las matrices contienen un subconjunto de los tipos de datos disponibles de Visual FoxPro. Además de los tipos de datos comunes como numéricas y alfanuméricas, y caracteres (letras y números), existen otros tipos específicos.
Una variable de tipo Variante puede contener cualquier tipo de datos de Visual FoxPro y el valor Null. También se utiliza comúnmente para indicar una variable específica cuyo objetivo es guardar el contenido de un campo memo, aunque no es estrictamente un tipo de datos.
| Tipo de Dato | Descripción | Tamaño |
|---|---|---|
| Date | Datos cronológicos formados por mes, año y día. Al usar formatos de fecha estrictos, {^0001-01-01}, 1 de enero, 1 d.C. | 8 bytes |
| DateTime | Datos cronológicos formados por mes, año, día y hora. Al usar formatos de fecha estrictos, {^0001-01-01}, 1 de enero, 1 d.C. | 8 bytes |
Declaración y Creación de Variables
Para crear una variable, almacene un valor en un elemento de Visual FoxPro con nombre utilizando el comando STORE o el operador = (igual). Si no ha sido especificado otro alcance, cuando se asigna un valor a una variable, Visual FoxPro la implementa como variable privada.
Lea también: IVA 21% Excel
Una variable pública debe ser declarada explícitamente antes que le sea asignado un valor y si no lo hacemos ocurre un error. Por esta razón vemos frecuentemente PUBLIC precedido por un comando RELEASE. Las variables locales, por su parte, deben ser declaradas explícitamente utilizando el comando LOCAL. Cuando se ejecuta el comando LOCAL se crea inmediatamente una nueva variable y se inicializa en .F.
Alcance de las Variables
Uno de los aspectos que causa confusión es el alcance de propiedades, métodos y variables en Visual FoxPro. El alcance de las variables define cuánto tiempo existirán y qué programas, métodos, procedimientos o Funciones Definidas por el usuario (UDFs) tienen acceso a ellas. Para ver el tema del alcance veremos el término "procedimiento" que incluye programas, métodos, procedimientos y UDFs.
Variables Públicas (GLOBAL)
Las variables definidas con la palabra clave PUBLIC están disponibles para todos los procedimientos y funciones, no sólo para los que están definidas. Se conocen también como Globales - de hecho se recomienda emplear 'g' como identificador de alcance para variables públicas. Una variable pública está disponible en una aplicación entera independientemente de dónde o cuándo es creada. Existe, hasta que sea liberada con RELEASE o que la aplicación (o el VFP) se cierren. Esto significa que cualquier programa puede leer, o cambiar el valor de la variable en cualquier momento. Habiendo dicho esto, es importante comprender que todas las variables creadas en la ventana de comandos tienen alcance público - y esto es lo que produce el grito de "trabaja en la ventana de comandos; pero no en el EXE". Aunque hay una excepción.
Cuando el alcance de una variable es PUBLIC eso significa que puede ser usada en cualquier módulo de la aplicación. Esto puede ser muy peligroso. Lo mejor que se puede hacer con el alcance PUBLIC es jamás usarlo, ya que es arcaico, una reliquia del pasado lejano de la Informática. Tratar de no usar variables Públicas pues no es una buena práctica. Si necesitas una variable global, mejor la creas antes y si no la necesitas, no la uses porque solo causarás problemas. Nunca generes una variable pública a partir de un parámetro.
Variables Privadas (PRIVATE)
Una variable privada está disponible para el procedimiento que la creó y para cualquier procedimiento que sea llamado por el que la crea, o llamado en la cadena de procedimientos inicializada por el que la crea. Es visible en el módulo que la declaró y también en todos los módulos que fueron llamados desde ese módulo. Cuando finaliza este procedimiento, la variable se libera automáticamente. La sentencia PARAMETERS es equivalente a PRIVATE.
Lea también: Guía IVA reducido
Variables Locales (LOCAL)
Las variables locales, al igual que las privadas tienen alcance en el procedimiento que las ha creado y luego se liberan tan pronto como acabe ese procedimiento. Sin embargo, a diferencia de las privadas, no tienen visibilidad fuera de su procedimiento padre y deben ser declaradas explícitamente utilizando el comando LOCAL. La única vía para que pueda ser modificada una variable local fuera de su procedimiento es que se pase como parámetro por referencia.
Convenciones de Nombres y Legibilidad
Está fuertemente recomendada la adopción de la convención de nombres para aumentar la legibilidad del código. Muchas veces se observa que los nombres de algunas variables empiezan con M. (M punto) mientras que los nombres de otras variables no. Si se usa el prefijo M. delante de una variable, se tiene el 100% de certeza de que se trata de una variable de memoria.
Si no se aclara que se trata de un campo o de una variable de memoria, se pueden tener muchos problemas porque se puede creer que tiene un valor cuando en realidad tiene otro valor muy distinto. Entonces, para solucionar esos problemas, una alternativa es colocar el prefijo M. delante de las variables. Si los nombres de los campos pueden ser iguales a los nombres de las variables de memoria, entonces es importantísimo acostumbrarse a prefijar a las variables de memoria con M.
Uso de Constantes Declaradas
Para aumentar en gran medida la legibilidad de nuestro código fuente podemos usar constantes declaradas. Gracias a ellas será mucho más fácil entender lo que escribimos. Una constante que tiene nombre. Así como se puede definir una constante declarada también se la puede eliminar.
Si tenemos varias constantes declaradas que usaremos en varias rutinas, funciones, clases, o métodos, entonces lo mejor es agruparlas a todas en un archivo y usaremos ese archivo cuando las necesitemos. Las constantes declaradas se graban en un archivo de texto. Un archivo de cabecera de constantes declaradas es simplemente un archivo de texto con muchos #DEFINE. Cuando se usa la directiva #INCLUDE, nos ahorra mucho tiempo. Es importante recordar cuáles fueron los nombres que se les dieron a nuestras constantes declaradas.
Lea también: ¿Cómo localizar tus XML del SAT?
Cuando se pone #INCLUDE dentro de un método de un formulario o de una clase, esas constantes declaradas solamente serán conocidas dentro de ese método. Para todos los demás métodos, no existen. Se puede pedir al Visual FoxPro que incluya de una sola vez al archivo para que esté disponible en todos los métodos de ese formulario o de esa clase.
