Namnrymd

Namnrymd (engelska: namespace) är en omgivning eller kontext i vilken alla namn är unika, dvs inte innehåller några homonymer eller andra tvetydigheter. Ofta definieras och används olika namnrymder just för att särskilja homonymer.

Namnmängd

Enligt definitionen är mängden möjliga namn i en namnrymd oändligt, men i praktiken finns det oftast begränsningar som gör namnmängden ändlig. Ofta brukar ordet namnrymd användas även för dess namnmängd.

Exempel

I programmering

Inom programmering i allmänhet och objektorienterad programmering i synnerhet används namnrymder för att undvika namnkonflikter i ett program. Exempel på programspråk som implementerar namnrymder är C++, C# och VB.NET. Java har ett liknande koncept, paket, eller packages.

I C++ deklareras klasser, variabler, funktioner och koncept (C++20) inuti en namnrymd:

namespace foo {
    int bar;
}

För att få tillgång till medlemmarna från en annan namnrymd kan alla medlemmar importeras med följande kodrad:

using namespace foo;

De går då att referera till på samma sätt som om de hade befunnit sig i den aktuella namnrymden. I stället för att importera alla medlemmar kan man referera till en enstaka medlem genom att ange namnrymdens namn som ett prefix till medlemmens namn: foo::bar.

Även varje klass har sin egen namnrymd av statiska medlemmar:

#include <iostream>

struct Box1 {
    static constexpr auto boxSide = 4;
};

struct Box2 {
    static constexpr auto boxSide = 12; 
};

int main() {
    std::cout << Box1::boxSide << '\n'; // Output 4
    std::cout << Box2::boxSide << '\n'; // Output 12
}

I e-postadresser

E-postadresser är ett väldigt tydligt exempel på namnrymder. E-postadressen bill@example.com är unik; Det kan bara finnas en mottagare med just den adressen. Det kan finnas andra personer på andra företag som också har användarnamnet ”bill”, men eftersom varje domän är en egen namnrymd så är deras adresser också unika.

En del organisationer som inte har beaktat problematiken med namnmängder har drabbats av problem när de har infört e-postadresser på formen förnamn.efternamn@example.com. Då har de inskränkt sin namnmängd för epostadresser så att den blir oanvändbar om där finns två eller fler personer med samma för- och efternamn.

I postadresser

Det finns till exempel 160 stycken gatuadresser som heter ”Storgatan 17”[1] i Sverige, en del av dem ligger dessutom i samma kommun. För att särskilja dem används postnummer och postorter för namnrymdsindelning.

Referenser

Noter

Källor

Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, 15 februari 2011.