Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
03.10.2002, 14:32
Gnomo



Hi!
Ich wollte mal fragen, ob ihr namespaces benutzt. wenn ja warum. was bringen die für vorteile, was für nachteile?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
03.10.2002, 14:39
Exec



also ich benutzt keine namespaces, aba nur, weils nich geht *g*
msvc++ meckert immer rum, das es "std" nich gibt, also lass ichs ... nachteile hab ich noch nich gemerkt ... mit neueren compilern sollte es, afaik, da auch keine probs geben ...

naja, ich weis nich viel davon, lass dich von den gebildeteren beraten ;)

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
002
03.10.2002, 16:15
Kriz



Namespaces sind eine weitere Methode zur Organisation von Modulen und Libraries. Im Normalfall ist die codetechnisch höchste Instanz die Headerdatei. Angenommen zwei Softwarehäuser erstellen einen Haufen nützlicher Funktionen und Klassen bereit. Beide nennen eine Klasse zufälligerweise gleichsam "CUtility" oder sowas.

Du brauchst für deinen Code aber sowohl die Headerdatei der Firma A als auch der Firma B. Irgendwo in deinem Programm wird dann eine Instanz von "CUtility" erzeugt und verwendet.

Hm... Blöderweise weiß der Compiler aber nicht, welche Klasse "CUtility" er nehmen soll, die von Firma A oder die von Firma B. Davon abgesehen wird er schon beim Kompilieren meckern wegen doppelter Zuordbarkeit von "CUtility".

So hat man eben als nächste Unterscheidungsform die Namespaces (Namensräume) eingeführt. Somit kann man nun zwischen "CUtility" von Firma A und von Firma B unterscheiden:

Quellcode:
namespace FirmaA
{
    class CUtility {...};
}

Quellcode:
namespace FirmaB
{
    class CUtility {...};
}

Es gibt dann mehrere Möglichkeiten, die Namespaces zu verwenden. SInnvoll ist der Scope-Operator:
Quellcode:
int main()
{
    FirmaA::CUtility object_1;
    FirmaB::CUtility object_2;
    ...
    int x = object_1.GetNumber(); // GetNumber() von Firma A
    int y = object_2.GetNumber(); // GetNumber() von Firma B
    return 0;
}

Ich nehme wenig namespaces, weil man bei den Standardsachen eh drauf verzichten kann.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
003
05.10.2002, 12:20
Prefect



Mir gefällt dieses Beispiel mit FirmaA und FirmaB nicht. Namespaces sollten nicht danach gegliedert werden, wer den Quellcode geschrieben hat, sondern danach, welchen Zweck die einzelnen Funktionen erfüllen (z.B. GUI vs. Filemanagement). Im Beispiel mit den beiden Firmen würde das zwar wahrscheinlich aufs selbe rauslaufen, aber der Gedanke dahinter ist eben ein anderer...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
004
05.10.2002, 12:37
Mazze



Ich hab gehört, dass man mit namespaces eigentlich die einzelnen Module abgrenzen sollte.
Aber das ist mir zu viel Aufwand. Mach ich eigentlich nie.

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
005
05.10.2002, 15:25
Kriz



Prefect, wie man die Namespaces einsetzt, ist doch vollkommen egal. Das Beispiel mit den Firmen sollte nur mal zeigen, daß Namenskonflikte in einem Gültigkeitsraum mehr oder weniger elegant (löl) gelöst werden können, falls zwei differenzierte Namensräume aufeinander treffen und gleichen Inhalt besitzen. Das man damit auch projektinterne Gleichheiten ausräumen kann, ist mir auch klar, obwohl diese Fälle in meinen Augen eher von schlechter Modulplanung zeugen als von trickreichem Design. Schließlich muß man innerhabl eines Projekts keine Namenskonflikte auslösen. Sowas tritt eigentlich u.U. nur dann auf, wenn Third-Party-Software eingebunden wird. Also ich habe für meine Programme noch nie Namespaces genutzt, weil es schon von vornherein keinerlei Namenskonflikte gibt.

Mit persönlich gefällt das URL-System von Java diesbezüglich viel besser, weil man damit schon von vornherein Namenskonflikten aus dem Weg gehen kann.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche