Co jsou statické proměnné?
Statické proměnné, také nazývané globální proměnné, jsou kousky dat, které nejsou spojeny s konkrétní instancí třídy. Pro tyto proměnné může existovat pouze jedna hodnota bez ohledu na počet vytvořených objektů třídy. V závislosti na kontextu mohou být statické proměnné flexibilnější nebo restriktivnější než jejich protějšky s proměnnými instance, které mají své vlastní diskrétní hodnoty pro každý konkrétní objekt typu třídy. V objektově orientovaných programovacích jazycích správná programovací praxe obvykle vyžaduje, aby použití statických objektů, metod nebo proměnných bylo omezeno na minimum, ale mají užitečné aplikace.
Jedním z hlavních důvodů, proč jsou statické proměnné občas považovány za omezující, je to, že pro proměnnou nemůže nikdy existovat více než jedna hodnota. Jakékoli přiřazení k proměnné přepíše předchozí a všechny informace v předchozí hodnotě se ztratí. Bez více kopií proměnné nelze uložit více datových hodnot. Je-li hodnota změněna, musí každý objekt, který ovlivňuje, fungovat s novou hodnotou, a pokud původní hodnota neměla být odstraněna, změna by mohla být škodlivá pro každý objekt instance konkrétního typu třídy. Pokud proměnná není nějakým způsobem uzamčena při vytváření, riziko neočekávané změny a následného chaosu, který by mohla způsobit na objektech, způsobuje, že někteří programátoři se vyhnou statickým proměnným, kdykoli je to možné.
Statické proměnné lze někdy považovat za flexibilní ze stejného důvodu, proč je lze nazvat omezující. I když hodnota proměnné není uzamčena, mohou mít plánované změny její hodnoty pozitivní účinky. Je zaručeno, že proměnná sdílená mezi všemi objekty třídy je konzistentní a lze ji používat uvnitř i vně třídy s jistotou, že její hodnota je vždy stejná. Statické proměnné mají celou řadu užitečných aplikací, zejména při údržbě konstant a implementaci serializace. Zejména Java se silně spoléhá na tento mechanismus statické serializace.
Existují určitá obecná pravidla, která programátoři často používají při implementaci statických proměnných. Tyto proměnné obvykle fungují nejlépe jako malé datové hodnoty, protože velké statické objekty mohou učinit program mnohem rigidnějším, než musí být. Malé hodnoty dat lze rychle a snadno změnit bez přílišného strachu z chyb. Velké statické objekty vyžadují změny času a úsilí a jsou také náchylnější k zavedení chyby, která by narušila všechny objekty třídy. Toto jsou pokyny, nerozbitná pravidla a v závislosti na programu mohou existovat použití pro malé i velké proměnné.