- Глобальная переменная
-
В программировании глобальной переменной называют переменную, областью видимости которой является вся программа (кроме затенённых (англ.) областей). Механизмы взаимодействия с глобальными переменными называют global state или global environment. Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений[1].
Использование глобальных переменных имеет недостатки: глобальная переменная может быть изменена в любой точке программы (если она не находится в защищённой памяти или объявлена как переменная только для чтения (англ.)), что может повлиять на работу других частей программы[2]. По этой причине глобальные переменные имеют неограниченный потенциал для создания взаимных зависимостей, что приводит к усложнения программы. Однако в некоторых случаях бывает полезно использовать глобальные переменные. Например, они могут быть использованы, чтобы избежать необходимости прохода часто используемых переменных через несколько функций. Глобальные переменные также затрудняют интеграцию модулей, поскольку код, написанный ранее, может содержать глобальные переменные с теми же именами, что и во встраиваемом модуле.
Глобальные переменные широко используются для передачи данных между секциями кода, которые не участвуют в отношениях вызовов, такие как параллельные нити исполнения или обработчики сигналов. Без надлежащей блокировки (например, с помощью мьютекса), код, использующий глобальные переменные, не будет потокобезопасным, за исключением переменных, доступных только для чтения (англ.) в защищённой области памяти. С увеличением количества переменных и, соответственно, блокировок увеличиваются вероятность взаимных блокировок.
Эта статья содержит незавершённый перевод с английского языка. Вы можете помочь проекту, переведя её до конца.См. также
Примечания
- ↑ Керниган и Ритчи Язык программипования Си — С. 44, 87.
- ↑ William Wulf and Mary Shaw, “Global Variable Considered harmful”, ACM SIGPLAN Notices, volume 8, issue 2, 1973 February, С. 28–34.
Ссылки
Категория:- Переменная (программирование)
Wikimedia Foundation. 2010.