2011-05-31 2 views
1

J'ai un programme qui appelle constamment une fonction. Dans ma fonction, j'utilise des variables qui ne sont utilisées qu'à l'intérieur de cette fonction. Vaut-il mieux «Style» d'avoir ces variables comme globales afin qu'elles ne soient pas constamment créées ou mieux de les avoir dans la fonction puisqu'elles ne sont pas pertinentes pour le reste du programme.vars globales vs variables locales

Merci

+1

Quel langage comme dans certains il y a un autre chemin et quel type sont les variables car pour beaucoup il n'aura pas d'importance – Mark

+0

son en C++ et sa gamme de variables de type différent – Johnston

Répondre

2

Ce que vous faites est correct. Vous voulez éviter les variables d'étendue globales. Laissez le compilateur ou l'interpréteur s'occuper de toute optimisation de l'utilisation de la mémoire. Si vous allez sur l'autre route, vous serez dans un monde de mal.

1

pratique standard aurait-vous garder les variables dans le champ qu'ils sont nécessaires. Dans votre cas, ces variables seraient uniquement locales, alors déclarez-les et consommez-les localement. La logique pour les variables globales serait généralement pour l'accès inter-applications.

0

Le coût de performance de l'allocation de variables locales (auto) est effectivement nul. Ces variables sont attribuées par rapport au pointeur de la pile et font déjà partie de votre cadre de pile. Il n'y a pas de hit de performance pour les variables locales.

Si vous avez besoin d'une variable pour maintenir une valeur entre les appels à votre fonction, juste déclarer comme statique locale plutôt que globale.

+1

Pas vrai (en C++) car les variables pourraient être classes complexes – Mark

+0

OP demandait une meilleure pratique. – jbruni

1

Si vous avez des classes et des fonctions, il est absolument préférable d'avoir une variable locale dans les fonctions et si vous avez besoin d'une variable, qui est utilisée dans plus de fonctions dans les mêmes variables globales privées. Essayez de ne pas utiliser les variables publiques globales, vous ne savez jamais qui ou quoi va le changer.

1

Je ne suis pas sûr de ce que la langue que vous utilisez, mais il est généralement préférable de ne pas déclarer une variable globale si elle est nécessaire que dans une seule méthode.

Ceci est également plus efficace en termes de mémoire car la variable n'utilise la mémoire que lorsque la fonction qui la contient est appelée.

Jetez un oeil à ce link pour plus d'informations sur les raisons variables globales doivent être évités si possible.

Questions connexes