Gültigkeitsbereich einer Variablen
- Gültigkeitsbereich:der Programmteil, in dem eine Variable bekannt ist und benutzt werden darf (engl. scope).
- Lokal:in einer Operation (oder einem Block) deklariert — nur dort gültig.
- Parameter:verhalten sich wie lokale Variablen der Operation.
- Global:außerhalb aller Operationen deklariert — in Java als Attribut der Klasse — und überall darin lesbar.
- Lebensdauer:lokale Variablen entstehen bei jedem Aufruf neu und verschwinden, wenn die Operation endet.
Verdecken und Seiteneffekte
- Verdecken:eine lokale Variable oder ein Parameter mit gleichem Namen verdeckt die globale innerhalb der Operation.
- Python:eine Zuweisung in einer Funktion erzeugt eine neue lokale Variable; die globale ändert nur, wer
global nameschreibt. - Seiteneffekt:eine Operation ändert eine globale Variable — das Ergebnis hängt dann von der Aufrufreihenfolge ab.
- Faustregel:Daten über Parameter hinein, über
returnheraus.
Wähle einen Stift und klicke jedes Vorkommen einer Variablen im Code an (Tastatur: Tab, dann Enter). Markiere, ob es die globale Variable, eine lokale Variable oder ein Parameter ist — ein Zähler läuft mit.
Halte fest: Entscheidend ist, wo eine Variable deklariert ist, nicht wie sie heißt: Gleiche Namen können zu verschiedenen Speicherplätzen gehören.
Lokal gilt nur in der Operation, in der sie deklariert ist · global gilt überall · bei gleichem Namen verdeckt die lokale die globale.
Allgemeine Hinweise
Lokale Werte sind danach weg
Nach dem Ende einer Operation existieren ihre lokalen Variablen nicht mehr. Wer das Ergebnis braucht, muss es mit return zurückgeben.
Gleicher Name, anderer Speicherplatz
Ein Parameter punkte und ein Attribut punkte sind zwei Variablen. In Java erreicht man das Attribut dann nur noch mit this.punkte.
So lokal wie möglich
Deklariere Variablen erst dort, wo du sie brauchst. Je kleiner der Gültigkeitsbereich, desto weniger kann an anderer Stelle schiefgehen.
