глобальные переменные против локальных перемен - PullRequest
1 голос
/ 01 июня 2011

У меня есть программа, которая постоянно вызывает функцию. В моей функции я использую переменные, которые используются только внутри этой функции. Лучше ли "Стиль" иметь эти переменные как глобальные, чтобы они не создавались постоянно, или лучше иметь их в функции, поскольку они не имеют значения для остальной части программы.

Спасибо

Ответы [ 5 ]

2 голосов
/ 01 июня 2011

То, что вы делаете, правильно. Вы хотите избежать глобальных переменных области видимости. Пусть компилятор или интерпретатор позаботятся о любой оптимизации использования памяти. Если вы пойдете по другой дороге, вы окажетесь в мире боли.

1 голос
/ 01 июня 2011

Я не уверен, какой язык вы используете, но обычно лучше не объявлять переменную как глобальную, если она требуется только в одном методе.

Это также более эффективно использует память, так как переменная использует память только тогда, когда вызывается содержащая ее функция.

Посмотрите эту ссылку для получения дополнительной информации опочему глобальных переменных следует избегать, когда это возможно.

1 голос
/ 01 июня 2011

Если у вас есть классы и функции, то лучше всего иметь локальные переменные в функциях, а если вам нужна некоторая переменная, которая используется в большем количестве функций в одном и том же объекте, установите частные глобальные переменные.Старайтесь не использовать глобальные публичные переменные, вы никогда не знаете, кто или что изменит это.

1 голос
/ 01 июня 2011

В стандартной практике вы должны держать переменные в той области, в которой они необходимы. В вашем случае эти переменные будут только локальными, поэтому объявляйте их и используйте их локально. Логика для глобальных переменных, как правило, должна быть для межплатформенного доступа.

0 голосов
/ 01 июня 2011

Производительность при размещении локальных (авто) переменных практически равна нулю.Эти переменные расположены относительно указателя стека и уже являются частью вашего стекового фрейма.Для локальных переменных производительность не падает.

Если вам нужна переменная для поддержания значения между вызовами вашей функции, просто объявите ее как статическую локальную, а не глобальную.

...