Zmienna globalna – zmienna istniejąca przez cały czas życia programu i widziana z wielu miejsc w programie.

Nadużywanie zmiennych globalnych może prowadzić do poważnych problemów, takich jak: w przypadku programów wielowątkowych, zmienna taka może być modyfikowana przez dowolny wątek, co prowadzić może do nieokreśloności przy braku synchronizacji wątków. jeśli funkcja używa zmiennej globalnej jako zmiennej pomocniczej, niemożliwe może być jej rekursywne wywołanie zmienne globalne zaśmiecają przestrzeń nazw, w niektórych architekturach może to doprowadzić do przepełnienia stosu na działanie danej części kodu może mieć wpływ kod zupełnie niezwiązany, o ile oba używają tej samej zmiennej globalnej i jeden z nich ją modyfikuje. zmienne globalne mogą kolidować ze zmiennymi lokalnymi (te drugie przesłaniają zmienne globalne o ile posiadają identyczne nazwy).

Do zalecanych rozwiązań należą: używanie zmiennych statycznych o ograniczonym zakresie widoczności, takich jak zmienne static w C – zapobiega niepożądanym interakcjom zamykanie zmiennych globalnych jako pól statycznych w klasach (najczęściej w klasach abstrakcyjnych) zabezpieczanie dostępu do zmiennych globalnych blokadami. przerobienie programu tak, żeby korzystał z mniejszej liczby zmiennych globalnych. nazywanie zmiennych globalnych w sposób uniemożliwiający kolizję nazw (jest to obowiązkowe w Ruby), lub też deklarowanie w każdej funkcji z których zmiennych globalnych ona korzysta (PHP).

W wielu sytuacjach nie da się uniknąć istnienia zmiennych globalnych – np. w programach języka C przeznaczonych na architektury nie posiadające możliwości dynamicznej alokacji pamięci. Stosowanie tam zmiennych globalnych jest jedynym możliwym sposobem na przekazanie większej liczby parametrów z jednej funkcji do drugiej.

Niektóre języki programowania domyślnie po utworzeniu zmiennej przyjmują, że jest to zmienna o zakresie globalnym – czyli widoczna w dowolnym miejscu programu.

Zobacz też zmienna statyczna funkcja globalna

Kategoria:Zmienna (informatyka)