Variable statique

Définition, exemples et bonnes pratiques

À retenir

  • Elle conserve sa valeur entre plusieurs appels d'une même fonction.
  • Elle n'est créée et initialisée qu'une seule fois, au démarrage ou au premier passage.
  • Elle est idéale pour stocker des informations globales à une fonction sans polluer le reste du code.

Une variable statique est une boîte de stockage de données qui ne s'efface pas à la fin d'une action. Contrairement à une variable classique qui est détruite dès que la fonction s'arrête, la variable statique garde sa valeur en mémoire pour la prochaine fois qu'on en aura besoin. C'est comme un carnet de notes que l'on laisserait sur un bureau : même si on quitte la pièce, les informations écrites dedans sont toujours là quand on revient.

Étymologie

Calque de l'anglais static variable. Le mot vient du latin staticus, signifiant « qui reste en place » ou « stable ». En informatique, cela indique que l'adresse mémoire de la variable ne change pas durant toute l'exécution du programme.

Exemples d'usage

  • Un compteur dans une fonction qui mémorise combien de fois un utilisateur a cliqué sur un bouton depuis le lancement de l'application.
  • Un identifiant unique (ID) qui s'incrémente automatiquement à chaque création d'un nouvel utilisateur dans un système.
  • En programmation orientée objet, une variable partagée par tous les exemplaires (instances) d'une même catégorie d'objets.

Cas d'usage

Elle est utilisée pour maintenir un état ou un historique sans avoir recours à des variables globales, qui sont souvent considérées comme de mauvaises pratiques. On la retrouve en développement système (C/C++), en programmation Web (PHP) ou en programmation orientée objet (Java, C#) pour définir des constantes ou des compteurs communs.

Bonnes pratiques

Il faut éviter d'en abuser, car les variables statiques occupent de la mémoire pendant toute la durée de vie du programme. De plus, elles peuvent rendre les tests unitaires plus complexes car elles conservent un historique entre deux tests. En environnement multi-tâches (multithreading), leur accès doit être sécurisé pour éviter que deux processus ne les modifient en même temps.

Synonymes

variable persistante variable de classe

Antonymes

variable dynamique variable automatique variable locale

Conseil

Utilisez une variable statique lorsque vous avez besoin qu'une fonction se 'souvienne' de ce qu'elle a fait précédemment, sans pour autant rendre cette information accessible à tout votre programme.

Questions fréquentes

Quelle est la différence avec une variable globale ?

Une variable globale est accessible depuis n'importe quel endroit du code. Une variable statique (dans une fonction) n'est visible qu'à l'intérieur de cette fonction, même si elle survit dans le temps.

Une variable statique peut-elle changer de valeur ?

Oui, elle peut être modifiée. 'Statique' définit sa persistance en mémoire, pas son impossibilité d'être modifiée (ce qui serait une constante).