Bereik (informatica)

Uit Wikipedia, de vrije encyclopedie
(Doorverwezen vanaf Scope)

In de informatica wordt met het bereik (gewoonlijk de scope) van een symbool het deel van de broncode aangeduid waarin dat symbool gedefinieerd is. Het beperken van de scope van een symbool maakt het mogelijk dezelfde naam meermaals te gebruiken zonder dat verschillende definities met elkaar in conflict komen. Een andere belangrijke reden is, dat door de scope van een symbool te beperken de interne werking van een deel van een programma of programmabibliotheek kan worden verborgen zodat ongewenste linkage kan worden uitgesloten. Een bekend voorbeeld voor het beperken van een scope zijn lokale variabelen, die alleen binnen de procedure waarin ze zijn gedefinieerd geldig zijn, maar ook namespaces zijn bedoeld om het bereik van een symbool te beperken.

Aan welke regels het bereik van een symbool is onderworpen, verschilt van taal tot taal, maar veelal[1] wordt de scope gegeven door het blok waarin het symbool is gedefinieerd.

Statisch en dynamisch bereik[bewerken | brontekst bewerken]

Bij een statisch bereik (ook lexicaal bereik genoemd) wordt het bereik van een symbool syntactisch bepaald: het is een bepaald deel van de broncode waar de definitie van het symbool in voorkomt. Het bereik wordt dus bepaald als het programma wordt gecompileerd (compile time), waardoor de geldigheid van gebruikte symbolen kan worden getoetst door de compiler, die passende diagnostische meldingen kan produceren.

Bij een dynamisch bereik wordt het bereik van een symbool bepaald door de uitvoering van het programma (run time): een definitie van een symbool blijft van kracht, waar de desbetreffende code ook gedefinieerd is, totdat de definitie ongedaan wordt gemaakt. Fouten in het gebruik van symbolen kunnen daardoor alleen worden geconstateerd tijdens het uitvoeren van het programma.

Globaal bereik[bewerken | brontekst bewerken]

Een bijzonder geval is de global scope, wat inhoudt dat het symbool in het hele programma gedefinieerd is. Omdat dit bereik geen delen van de broncode uitsluit, gaan zodoende alle voordelen van het beperken van de scope verloren. De praktijk wordt dan ook in de regel stevig afgeraden.

Garbage collection[bewerken | brontekst bewerken]

In programmeertalen met garbage collection heeft het bereik van een objectreferentie invloed op het geheugengebruik. Een ongebruikt object kan pas worden opgeruimd wanneer al zijn referenties buiten bereik (out of scope) zijn.