Content-Length: 69573 | pFad | http://pl.wikipedia.org/wiki/Zmienna_globalna

Zmienna globalna – Wikipedia, wolna encyklopedia Przejdź do zawartości

Zmienna globalna

Z Wikipedii, wolnej encyklopedii

Zmienna globalnazmienna 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ż

[edytuj | edytuj kod]








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://pl.wikipedia.org/wiki/Zmienna_globalna

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy