Portée des variables
La portée (scope) d'une variable correspond à la zone du programme dans laquelle cette variable est visible et accessible.
Autrement dit :
- où la variable existe
- où elle peut être lue
- où elle peut être modifiée
Une bonne gestion de la portée empêche les erreurs invisibles.
Pourquoi la portée est cruciale en programmation structurée
La programmation structurée cherche à :
- limiter les effets de bord
- contrôler le flux de données
- rendre le code prévisible
La portée des variables permet de :
- isoler les données
- réduire le couplage
- améliorer la lisibilité
- sécuriser les traitements
Les grands types de portée
Dans la programmation structurée, on distingue principalement :
- Portée locale
- Portée de bloc
- Portée de fonction / procédure
- Portée globale
- Portée de fichier / module (selon le langage)
Portée locale
Définition
Une variable locale est déclarée :
- dans une fonction
- dans une procédure
- dans un bloc
Elle n'est accessible que dans cette zone.
Exemple (C)
Impossible d'accéder à resultat en dehors de calculer.
Exemple (Pascal)
Avantages
- Protection des données
- Pas de conflit de noms
- Code plus sûr
- Moins d'effets secondaires
Portée de bloc
Définition
Certaines variables sont visibles uniquement à l'intérieur d'un bloc conditionnel ou itératif.
Exemple (C)
Exemple (Pascal / Delphi)
Portée de fonction / procédure
Les paramètres d'une fonction ont une portée limitée à cette fonction.
Portée globale
Définition
Une variable globale est déclarée :
- en dehors de toute fonction
- accessible par tout le programme
Exemple (C)
Problèmes des variables globales
- Effets de bord
- Dépendances cachées
- Difficulté de maintenance
- Tests compliqués
Règle d'or
Utiliser les variables globales en dernier recours uniquement.
Portée de fichier / module
Dans certains langages (C), on peut limiter la visibilité au fichier :
- static int compteurFichier;
- Variable accessible uniquement dans le fichier
- Réduction du couplage
Masquage de variables (shadowing)
Définition
Une variable locale peut masquer une variable globale ou externe portant le même nom.
Exemple
Source fréquente de bogues subtils.
Durée de vie vs portée
| Concept | Définition | |
|---|---|---|
| Portée | Où la variable est visible | |
| Durée de vie | Combien de temps elle existe en mémoire |
Une variable peut :
- avoir une portée locale
- mais une durée de vie plus longue (exemple : static)
Variables statiques
Exemple (C)
- Conserve sa valeur entre appels
- Complexifie la logique
Bonnes pratiques essentielles
- Déclarer les variables au plus près de leur usage
- Limiter leur portée
- Éviter les globales
- Utiliser des noms explicites
- Éviter le masquage
Portée et sécurité du code
Une mauvaise gestion de la portée peut entraîner :
- modifications involontaires
- dépendances cachées
- comportements imprévisibles
Moins une variable est visible, plus le code est sûr.
Exemple comparatif
Mauvais exemple :
Bon exemple :
Transition vers la POO
La portée des variables prépare à :
- l'encapsulation
- les attributs privés
- la gestion de l'état des objets
Résumé
| Type | Visibilité |
|---|---|
| Locale | Bloc / fonction |
| Paramètre | Fonction |
| Globale | Programme |
| Fichier | Module |
Conclusion
La portée des variables est une règle fondamentale de la programmation structurée.
Elle garantit un code :
- lisible
- prévisible
- sécurisé
- maintenable
Règle d'or : limiter la portée au strict nécessaire.