Variable global

Una variable global es, en informática, una variable accesible en todos los ámbitos de un programa informático. Los mecanismos de interacción con variables globales se denominan mecanismos de entorno global. El concepto de entorno global contrasta con el de entorno local donde todas las variables son locales sin memoria compartida (y por ello todas las iteraciones pueden restringirse al intercambio de mensajes).

El uso de este tipo de variables suele considerarse como una mala práctica, por el riesgo que conlleva esa deslocalización: una variable global puede ser modificada en cualquier parte del programa (a menos que resida en una sección de memoria protegida) y cualquier parte del programa depende de ella. Es por ello que una variable global tiene un potencial ilimitado para crear dependencias, factor éste que aumenta la complejidad. Sin embargo, en algunas ocasiones, las variables globales resultan muy útiles. Por ejemplo, se pueden usar para evitar tener que pasar variables usadas muy frecuentemente de forma continua entre diferentes subrutinas.

El uso de variables globales se desaconseja especialmente para lenguajes de programación funcionales (como puede ser Scheme). Viola la transparencia referencial y dificulta la legibilidad del código fuente.

Las variables globales se usan de forma frecuente para pasar información entre diferentes secciones del código que no comparten una relación de "función llamadora" - "función llamada", como ocurre con hilos concurrentes y módulos para el manejo de señales. Los lenguajes de programación donde cada archivo define un espacio de nombres implícito elminan la mayor parte de los problemas de los lenguajes con nombres de espacios gloables, aunque pueda haber algunos problemas si no se tiene cuidado a la hora de encapsular el código. Sin las restricciones adecuadas (como por ejemplo con un mutex), el código que usa variables globales no será a prueba de hilos excepto para los valores de sólo lectura en la memoria protegida.

Ejemplo de una variable global en C++:

#include <iostream>
 
int global = 3; // Esta es la variable global.
 
void ChangeGlobal()
{
   global = 5; // Se referencia la variable global en una función.
}
 
int main()
{
   std::cout << global << '\n'; // Se referencia la variable global en una segunda función.
   ChangeGlobal();
   std::cout << global << '\n';
   return 0;
}

Dado que la variable es de ámbito global, no hay necesidad de pasarla como parámetro a otras funciones. La variable global pertenece a todas las funciones del programa.

El resultado será:

3
5

El uso de variables globales dificulta la legibilidad del código fuente. Dado que en cualquier parte del programa y en todo momento se puede cambiar el valor de la variable, para entender el uso de la variable suele ser necesario tener que comprender el funcionamiento de una parte amplia del programa. También dificultan la separación del código en bibliotecas, ya que muchos sistemas (como por ejemplo DLL) no soportan la visualización directa de variables globales en otros módulos. La denominación de las variables también puede desembocar en problemas con la denominación ya que una variable global corre el riesgo de ser usada, por ejemplo, en lugar de una variable local. Una variable local con el mismo nombre puede ocultar el acceso de la variable global, dificultando aún más la legibilidad del código. Por todo ello, el uso de variables globales puede provocar efectos secundarios difíciles de entender, predecir, y hacen la búsqueda de errores más compleja. Las variables globales también dificultan someter las diferentes unidades de software a tests de forma aislada, repercutiendo así en una posible reducción de la calidad del código.

Si no se define una variable en una función, entonces se considera global, de forma automática. El valor actual de la variable es el que se usa en la función. Las funciones pueden invocarse con menos parámetros entrantes y salientes cuando se usan variables locales.

Algunos lenguajes de programación, como por ejemplo Java, no tienen variables globales. En Java, todas las variables que no son locales son campos de una clase. Así, todas las variables están en el ámbito de una clase o de un método. En Java, los campos estáticos (conocidos también como variables de clase) existen, independientemente de cualquier instancia de la clase y se comparte una copia entre todas las instancias; de esta forma los campos estáticos se usan para muchas de las tareas de las variables globales, gracias a su similar concepto de "compartir".

Véase también

Referencias


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Variable (programación) — Para otros usos de este término, véase Variable. En programación, las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un …   Wikipedia Español

  • Variable externa — Una variable externa es, en los lenguajes de programación C y C++, una variable declarada con la palabra clave extern. Contenido 1 Campo de aplicación 2 Ejemplo (C) 3 Referencias …   Wikipedia Español

  • Variable estática — En informática una variable estática es una variable cuyo valor no varía durante la vida del proceso en ejecución. Normalmente una variable estática tiene un ámbito más amplio que otras variables. Los valores de variables estáticas se pueden… …   Wikipedia Español

  • Variable local — Una variable local es, en informática, la variable a la que se le otorga un ámbito local. Tales variables sólo pueden accederse desde la función o bloque de instrucciones en donde se declaran. Las variables locales se contraponen a las variables… …   Wikipedia Español

  • Global.asax — is an optional file used to declare and handle application and session level events and objects. Global.asax is the ASP.NET extension of the ASP Global.asa file. The Global.asax file resides in the IIS virtual root of an ASP.NET application. At… …   Wikipedia

  • Global.asax — es un archivo opcional usado en las aplicación web de ASP.NET para declarar y manejar eventos y objetos a nivel de aplicación y de sesión. Global.asax es la extensión de archivo Global.asa utilizado en ASP. El archivo Global.asax reside en el… …   Wikipedia Español

  • Global warming controversy — refers to a variety of disputes, significantly more pronounced in the popular media than in the scientific literature,[1][2] regarding the nature, causes, and consequences of global warming. The disputed issues involve the causes of increased… …   Wikipedia

  • Global Hybrid Cooperation — (formerly called Advanced Hybrid System 2 or AHS2) is a set of hybrid vehicle technologies jointly developed by General Motors and what used to be DaimlerChrysler, with BMW joining in 2005. It uses two sets of gears in an automatic transmission:… …   Wikipedia

  • Global — is a synonym of worldwide and means of, or relating to, or involving the entire world, in the general sense or as the planet Earth. [ [http://dictionary.oed.com/cgi/entry/50095613?single=1 query type=word queryword=Global first=1 max to show=10… …   Wikipedia

  • global variable — noun (computing) A variable which applies for the whole of a program, including any subroutine • • • Main Entry: ↑globe …   Useful english dictionary


Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.