Mis on staatilised muutujad?

Staatilised muutujad, mida nimetatakse ka globaalseteks muutujateks, on andmetükid, mis ei ole seotud klassi konkreetse eksemplariga. Nende muutujate jaoks võib olla ainult üks väärtus, olenemata loodud klassiobjektide arvust. Sõltuvalt kontekstist võivad staatilised muutujad olla kas paindlikumad või piiravamad kui nende eksemplarimuutujate vasted, millel on oma diskreetsed väärtused klassitüübi iga konkreetse objekti jaoks. Objektorienteeritud programmeerimiskeelte puhul eeldab hea programmeerimistava tavaliselt, et staatiliste objektide, meetodite või muutujate kasutamine peab olema minimaalne, kuid neil on kasulikke rakendusi.

Üks peamine põhjus, miks staatilisi muutujaid mõnikord piiravateks peetakse, on see, et muutuja jaoks ei saa kunagi eksisteerida rohkem kui üks väärtus. Iga muutuja määramine kirjutab eelmise üle ja kogu eelmise väärtuse teave läheb kaotsi. Ilma muutuja mitme koopiata ei saa mitut andmeväärtust salvestada. Kui väärtust muudetakse, peavad kõik objektid, mida see mõjutab, toimima uue väärtusega ja kui vana väärtust ei kavatsetud kustutada, võib muudatus osutuda kahjulikuks konkreetse klassitüübi igale eksemplariobjektile. Kui muutuja pole loomisel kuidagi lukustatud, sunnib ennenägematute muutuste oht ja sellele järgnev kaos, mida see võib objektidele kaasa tuua, mõned programmeerijad võimaluse korral staatilisi muutujaid vältima.

Staatilisi muutujaid võib mõnikord pidada paindlikuks samal põhjusel, kui neid võib nimetada piiravateks. Isegi kui muutuja väärtus pole lukustatud, võivad selle väärtuse kavandatud muudatused avaldada positiivset mõju. Muutuja, mida jagatakse klassi kõigi objektide vahel, on garanteeritud järjepidevus ja seda saab kasutada nii klassi sees kui ka väljaspool seda kindlalt, et selle väärtus on alati sama. Staatilistel muutujatel on palju kasulikke rakendusi, eelkõige konstantide säilitamisel ja jadade rakendamisel. Eelkõige Java tugineb sellele staatilisele jadamehhanismile.

Staatiliste muutujate rakendamisel kasutavad programmeerijad sageli teatud üldreegleid. Need muutujad töötavad tavaliselt kõige paremini väikeste andmeväärtustena, kuna suured staatilised objektid võivad muuta programmi palju jäigemaks, kui see peab olema. Väikesi andmeväärtusi saab kiiresti ja lihtsalt muuta, kartmata liigset vigade sissetoomist. Suurte staatiliste objektide muutmine võtab rohkem aega ja vaeva ning on ka tõenäolisem vigade ilmnemisele, mis häiriks kõiki klassiobjekte. Need on juhised, mitte murdmatud reeglid, ja olenevalt programmist võib kasutada nii väikeseid kui ka suuri muutujaid.