fbpx
Wikipedia

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 este 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 globales, 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 solo 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

  • William Wulf and Mary Shaw, “Global Variable Considered Harmful”, ACM SIGPLAN Notices, volumen nr. 8, 2 editorial, febrero de 1973, págs. 28-34.

Enlaces externos

  •   Datos: Q1143344

variable, global, variable, global, informática, variable, accesible, todos, ámbitos, programa, informático, mecanismos, interacción, variables, globales, denominan, mecanismos, entorno, global, concepto, entorno, global, contrasta, entorno, local, donde, toda. Una variable global es en informatica una variable accesible en todos los ambitos de un programa informatico Los mecanismos de interaccion 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 practica por el riesgo que conlleva esa deslocalizacion una variable global puede ser modificada en cualquier parte del programa a menos que resida en una seccion 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 este que aumenta la complejidad Sin embargo en algunas ocasiones las variables globales resultan muy utiles 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 programacion funcionales como puede ser Scheme Viola la transparencia referencial y dificulta la legibilidad del codigo fuente Las variables globales se usan de forma frecuente para pasar informacion entre diferentes secciones del codigo que no comparten una relacion de funcion llamadora funcion llamada como ocurre con hilos concurrentes y modulos para el manejo de senales Los lenguajes de programacion donde cada archivo define un espacio de nombres implicito elminan la mayor parte de los problemas de los lenguajes con nombres de espacios globales aunque pueda haber algunos problemas si no se tiene cuidado a la hora de encapsular el codigo Sin las restricciones adecuadas como por ejemplo con un mutex el codigo que usa variables globales no sera a prueba de hilos excepto para los valores de solo lectura en la memoria protegida Ejemplo de una variable global en C include lt iostream gt int global 3 Esta es la variable global void ChangeGlobal global 5 Se referencia la variable global en una funcion int main std cout lt lt global lt lt n Se referencia la variable global en una segunda funcion ChangeGlobal std cout lt lt global lt lt n return 0 Dado que la variable es de ambito global no hay necesidad de pasarla como parametro a otras funciones La variable global pertenece a todas las funciones del programa El resultado sera 3 5 El uso de variables globales dificulta la legibilidad del codigo 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 Tambien dificultan la separacion del codigo en bibliotecas ya que muchos sistemas como por ejemplo DLL no soportan la visualizacion directa de variables globales en otros modulos La denominacion de las variables tambien puede desembocar en problemas con la denominacion 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 aun mas la legibilidad del codigo Por todo ello el uso de variables globales puede provocar efectos secundarios dificiles de entender predecir y hacen la busqueda de errores mas compleja Las variables globales tambien dificultan someter las diferentes unidades de software a tests de forma aislada repercutiendo asi en una posible reduccion de la calidad del codigo Si no se define una variable en una funcion entonces se considera global de forma automatica El valor actual de la variable es el que se usa en la funcion Las funciones pueden invocarse con menos parametros entrantes y salientes cuando se usan variables locales Algunos lenguajes de programacion como por ejemplo Java no tienen variables globales En Java todas las variables que no son locales son campos de una clase Asi todas las variables estan en el ambito de una clase o de un metodo En Java los campos estaticos conocidos tambien 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 estaticos se usan para muchas de las tareas de las variables globales gracias a su similar concepto de compartir Vease tambien EditarVariables Variable estatica Variable externaReferencias EditarWilliam Wulf and Mary Shaw Global Variable Considered Harmful ACM SIGPLAN Notices volumen nr 8 2 editorial febrero de 1973 pags 28 34 Enlaces externos EditarEsta obra contiene una traduccion derivada de global variable de la Wikipedia en ingles publicada por sus editores bajo la Licencia de documentacion libre de GNU y la Licencia Creative Commons Atribucion CompartirIgual 3 0 Unported Datos Q1143344Obtenido de https es wikipedia org w index php title Variable global amp oldid 132300489, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos