Namensraum
Ein Namensraum (englisch: namespace) ist ein Begriff aus der Programmierung.
Jeder nicht nur lokal benötigte Bezeichner – das heißt Namen von beispielsweise global verwendbaren Variablen, Funktionen oder Klassen – sollte eindeutig sein. Mit zunehmender Projektgröße wird es schwerer, solche Namen zu finden und die Übersicht darüber zu behalten. Namen sollen auch nicht zu lang und unhandlich werden. Vor allem auch das Einbinden von Bibliotheken anderer Programmierer wird zur Herausforderung, weil diese unabhängig voneinander arbeiten und sich nicht weltweit absprechen können. Namensräume lösen das Problem, indem sie einen eindeutigen Namen vor den eigentlichen kurzen Namen stellen. Ein Namensraum kann dabei zum Beispiel aus dem Namen einer Firma, einer Person, eines Projektes, einer Domain, eines Themengebiets oder einer Kombination von diesen zusammengesetzt werden. Lokal kann mit den kurzen Namen gearbeitet werden, übergreifend und/oder um Eindeutigkeit herzustellen, verwendet man den Namen inklusive Namensraum.
Das (abstrakte) Beispiel zeigt zwei Projekte unterschiedlicher Hersteller. Projekt_X
und Projekt_Y
sind zwei Namensräume. Klasse_A
ist ein Bezeichner, der hier für den doppelt vergebenen Namen einer Klasse steht.
-
Projekt_X.Klasse_A
-
Projekt_Y.Klasse_A
Obwohl Klasse_A
zweimal vorkommt, lassen sich beide durch Voranstellen des Projektnamens voneinander unterscheiden und eindeutig ansprechen.
Innerhalb eines Projektes können gleichnamige Klassen durch ihr Themengebiet unterschieden werden.
-
Projekt_X.Thema_1.Klasse_A
-
Projekt_X.Thema_2.Klasse_A
Ein weiterer Effekt ist, dass mittels Namensräumen auch eine organisatorische Struktur erstellt werden kann.
Vergleichbare Probleme und deren Lösungen in Gebieten abseits der Programmierung:
- Personen mit dem gleichen Vornamen lassen sich durch Voranstellen von Wohnort und Nachname unterscheiden.
- Dateien können denselben Namen nebst Erweiterung haben, wenn sie in unterschiedlichen Pfaden gespeichert sind.
Siehe auch
- CSS/Namensraum
- JavaScript/Tutorials/Namensraum
- Grundgerüst eines SVG-Dokuments (incl. Namensraumangabe)
- XML/Regeln/XML-Namensräume
- Hilfe:Wiki/Wikistruktur#Namensräume
Weblinks
- Wikipedia: Namensraum
- MDN: Namespaces in XML