supprimer les variables globales dans le programme c ++

J’ai un gros programme en c ++ ayant trop de variables de fonction et globales. Maintenant, je veux supprimer ces variables globales et utiliser uniquement des variables locales plutôt que des variables globales. Quelqu’un peut-il me suggérer le meilleur moyen de le faire? Merci!

Son programme autour de 4000 lignes en C ++. Il y a 10 classes et 60 fonctions dans ces différentes classes, 30 variables globales. Les variables globales ont utilisé entre les fonctions de différentes classes.

Je commence normalement par mettre les variables globales dans un espace de noms

namespace global { int var; ... } 

cela entraînera des erreurs partout où l’on utilise ‘var’, alors je remplacerais simplement les références une par une à la variante d’espace de noms. une fois que toutes les références de variables globales sont dans l’espace de noms, il est plus facile de voir quelles variables sont locales et lesquelles sont globales

 if ( global::var == 1 ) ... 

maintenant, en effectuant global::var recherche dans global::var vous obtenez une liste de variables où il est utilisé. Vous devrez ensuite examiner l’utilisation au cas par cas pour voir si une variable est utilisée dans plusieurs modules ou non. Dans d’autres cas, il est considéré comme une variable locale.

C’est une méthode lourde, mais éliminer les vars globaux vaut toujours la peine d’être fait.

Je suggère une solution telle que la suppression de leurs déclarations du champ d’application global et leur insertion dans les fonctions appréciées.

Examlpe:

 int hello; // global // remove it 

Maintenant, mettez-le dans la fonction:

 void func() { int hello; // local //... 

Nous avons deux cas:

Si une autre fonction a besoin de connaître la valeur de hello , laissez-la prendre ce hello tant que paramètre:

 void func2(const int &helloVar) { // ... 

Si une variable globale est utilisée par une seule fonction, vous pouvez utiliser une variable locale static .

Je suggérerais d’utiliser une classe. Ils sont parfaits pour cacher des variables et des fonctions dans un groupe et les classer. Voici la structure de base:

 class example { public: example(); //basic constructor int function1(); //example function int x; // a variable accesible globally private: int y; // a variable only accesible by functions of the class }; 

Appeler chaque fonction est facile mais je n’expliquerai pas car je ne veux pas commencer un mur de texte. Vous pouvez aller à ce lien pour plus d’informations: http://www.cplusplus.com/doc/tutorial/classes/

vous pouvez mettre ces variables dans une classe, puis créer un pointeur sur un object de cette classe à la 1ère place, puis utiliser ces variables puis transmettre ce pointeur à chaque méthode nécessitant ces variables, n’oubliez pas de supprimer l’object lorsque vous ne l’utilisez pas.