У програмуванні, глобальна змінна (англ. global variable) — змінна, яка доступна в будь-якій області видимості, за винятком перекриття її іншою змінною з тим самим ім'ям. Механізм взаємодій з глобальними змінними називається механізмом глобального середовища. Парадигма глобального середовища протиставляється парадигмі місцевого середовища, згідно з якою всі змінні місцеві без використання спільної пам'яті (тобто всі взаємодії мають відбуватись через обмін повідомленнями).
Такі змінні вважаються поганим стилем саме через свою повсюдність: глобальна змінна може бути змінена будь-звідки, (за винятком розташування в захищеній пам'яті) і будь-яка частина пам'яті може залежати від неї. Таким чином глобальні змінні мають необмежений потенціал для створення взаємних залежностей, які створюють додаткову складність. Однак, зрідка, особливо в маленьких програмах, використання глобальних змінних може бути задовільним варіантом. Наприклад, задля уникнення постійної передачі часто використовних змінних через декілька функцій.
Глобальні змінні широко використовуються для передачі інформації між різними частинами коду, які не викликають одне одного, такими як конкурентні потоки або обробники сигналів. Без правильного блокування доступу, наприклад із допомогою семафора, код із використанням глобальних змінних не буде потоково безпечним, за винятком змінних тільки для читання розташованих захищеній ділянці пам'яті. Із збільшенням кількості змінних і, відповідно, блокувань збільшуються ймовірність взаємних блокувань.
Чому треба уникати глобальних змінних коли це можливо
- Повсюдність — початковий код легше розуміти коли область видимості його елементів обмежена. Глобальні змінні можуть бути змінені будь-де в програмі, що ускладнює згадати де саме вони можуть змінюватись.
- Неявне зчеплення — програми з багатьма глобальними змінними часто мають щільне зчеплення між цими змінними, а також між цими змінними і функціями. Групування пов'язаних елементів в зчеплені блоки, зазвичай, призводить до покращення програм.
- Питання конкурентності — якщо глобальні змінні можуть бути доступні з кількох нитях виконання, синхронізація стає необхідною, хоча й часто нехтуваною. Динамічне компонування модулів з глобальними змінними може в результаті видати неттє-небезпечну систему навіть, якщо всі окремі частини були добре протестовані в багатьох середовищах.
- Захаращення простору імен — глобальні змінні доступні звідусіль. Ви можете неочікуванно використати глобальну змінну, хоча намагалися змінити місцеву змінну. Також, якщо ви колись спробуєте скомпонувати разом модулі, що мають однакове ім'я глобальної змінної, тоді ви можете отримати або помилку від компонувальника, або, що набагато гірше, компонувальник просто буде вважати, що існує лише одна змінна з таким ім'ям.
Посилання
- Глобальні змінні це зло [ 21 жовтня 2010 у Wayback Machine.] (англ.)
Ця стаття не містить . (березень 2017) |
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U programuvanni globalna zminna angl global variable zminna yaka dostupna v bud yakij oblasti vidimosti za vinyatkom perekrittya yiyi inshoyu zminnoyu z tim samim im yam Mehanizm vzayemodij z globalnimi zminnimi nazivayetsya mehanizmom globalnogo seredovisha Paradigma globalnogo seredovisha protistavlyayetsya paradigmi miscevogo seredovisha zgidno z yakoyu vsi zminni miscevi bez vikoristannya spilnoyi pam yati tobto vsi vzayemodiyi mayut vidbuvatis cherez obmin povidomlennyami Taki zminni vvazhayutsya poganim stilem same cherez svoyu povsyudnist globalna zminna mozhe buti zminena bud zvidki za vinyatkom roztashuvannya v zahishenij pam yati i bud yaka chastina pam yati mozhe zalezhati vid neyi Takim chinom globalni zminni mayut neobmezhenij potencial dlya stvorennya vzayemnih zalezhnostej yaki stvoryuyut dodatkovu skladnist Odnak zridka osoblivo v malenkih programah vikoristannya globalnih zminnih mozhe buti zadovilnim variantom Napriklad zadlya uniknennya postijnoyi peredachi chasto vikoristovnih zminnih cherez dekilka funkcij Globalni zminni shiroko vikoristovuyutsya dlya peredachi informaciyi mizh riznimi chastinami kodu yaki ne viklikayut odne odnogo takimi yak konkurentni potoki abo obrobniki signaliv Bez pravilnogo blokuvannya dostupu napriklad iz dopomogoyu semafora kod iz vikoristannyam globalnih zminnih ne bude potokovo bezpechnim za vinyatkom zminnih tilki dlya chitannya roztashovanih zahishenij dilyanci pam yati Iz zbilshennyam kilkosti zminnih i vidpovidno blokuvan zbilshuyutsya jmovirnist vzayemnih blokuvan Chomu treba unikati globalnih zminnih koli ce mozhlivoPovsyudnist pochatkovij kod legshe rozumiti koli oblast vidimosti jogo elementiv obmezhena Globalni zminni mozhut buti zmineni bud de v programi sho uskladnyuye zgadati de same voni mozhut zminyuvatis Neyavne zcheplennya programi z bagatma globalnimi zminnimi chasto mayut shilne zcheplennya mizh cimi zminnimi a takozh mizh cimi zminnimi i funkciyami Grupuvannya pov yazanih elementiv v zchepleni bloki zazvichaj prizvodit do pokrashennya program Pitannya konkurentnosti yaksho globalni zminni mozhut buti dostupni z kilkoh nityah vikonannya sinhronizaciya staye neobhidnoyu hocha j chasto nehtuvanoyu Dinamichne komponuvannya moduliv z globalnimi zminnimi mozhe v rezultati vidati nettye nebezpechnu sistemu navit yaksho vsi okremi chastini buli dobre protestovani v bagatoh seredovishah Zaharashennya prostoru imen globalni zminni dostupni zvidusil Vi mozhete neochikuvanno vikoristati globalnu zminnu hocha namagalisya zminiti miscevu zminnu Takozh yaksho vi kolis sprobuyete skomponuvati razom moduli sho mayut odnakove im ya globalnoyi zminnoyi todi vi mozhete otrimati abo pomilku vid komponuvalnika abo sho nabagato girshe komponuvalnik prosto bude vvazhati sho isnuye lishe odna zminna z takim im yam PosilannyaGlobalni zminni ce zlo 21 zhovtnya 2010 u Wayback Machine angl Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno berezen 2017 Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi