Variable globale
En programmation informatique, une variable globale est une variable déclarée à l'extérieur du corps de toute fonction ou classe, et pouvant donc être utilisée n'importe où dans le programme. On parle également de variable de portée globale.
Exemple de variable globale en langage C++
#include <iostream>
int global = 3; // Une variable globale
void ChangeGlobal()
{
global = 5; // Référence à la variable globale à l'intérieur d'une fonction
}
int main()
{
std::cout << global << '\n'; // Référence à la variable globale dans une autre fonction
ChangeGlobal();
std::cout << global << '\n';
}
La variable étant globale, il n'est pas nécessaire de la passer comme paramètre pour l'utiliser dans les fonctions. La variable globale appartient à toutes les fonctions du programme.
La sortie sera :
3 5
Avantages et inconvénients
Avantages
Les variables globales pouvant être utilisées partout dans un programme sans avoir été transmises préalablement en paramètres de fonction, leur utilisation peut simplifier la conception et l'écriture de programmes.
Inconvénients
L'utilisation de ces variables rend plus difficile la compréhension d'un programme ainsi que son débuggage et sa modification ultérieure.
Lors de la recherche d'erreurs de programmation, lorsqu'une variable globale contient une information erronée, il est plus difficile de trouver la source de l'erreur, car la variable a pu être modifiée dans n'importe quelle partie du programme.
Lors des modifications apportées à un programme, il est complexe de modifier le traitement d'une variable globale parce qu'il faut comprendre tout le programme pour savoir comment la variable était traitée dans le programme originel, étant donné que la variable peut être modifiée depuis n'importe quelle fonction. De plus, elles sont un vecteur de fuite de mémoire.
Lors de l'écriture de bibliothèques logicielles, les variables globales empêchent la réentrance si elles sont mal utilisées. C'est pourquoi il est recommandé de ne pas les utiliser pour l'écriture de bibliothèques.
Recommandations
Les inconvénients des variables globales étant plus grands que leurs avantages, il est déconseillé d'utiliser ce type de variables dans la conception de programmes, et de leur préférer l'utilisation de variables locales (ou de singletons avec accesseurs si l'aspect global est impératif).
Certains programmeurs ont recours à ces variables globales pour accélérer les premières phases du développement d'un programme. Ils en paient souvent le prix lorsque vient le temps de corriger leur programme ou de le modifier pour l'adapter aux nouveaux besoins de leur client.
Langages sans variables globales
L'environnement de développement Gambas (clone GNU de Visual Basic) n'admet pas de variables globales. Cependant, une variable quelconque déclarée PUBLIC y devient accessible depuis tout le projet.
Les langages fonctionnels purs, comme Haskell, n'ont pas de variables du tout, et donc n'ont pas de variables globales.