Summe geht nicht
-
BlauesShirt schrieb:
Gugelmoser schrieb:
Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p
Wofür denn, wenn ich fragen darf?
Ordnung.
-
Bullshit.
-
Gugelmoser schrieb:
SeppJ schrieb:
Gugelmoser schrieb:
amichian schrieb:
Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?
Es macht keinen Sinn, einen Namensraum zu definieren, nur um ihn dann wieder mit einer using-Direktive auszuleeren. Darum macht man es nicht.
Warum? Wenn man weiß, dass man keine Konflikte verursacht ist das völlig legitim.
Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p
So ein Quatsch.
Namensräume kann man in Cpp-Dateien grundsätzlich ausschütten. Sollte es zum Konflikt kommen, was nicht oft der Fall ist, geht man den umständlichen Weg.
-
Kommt drauf an.
Ich habe beispielsweise im
namespace geometryeine Linienklasse und imnamespace raster. Damit an der Deklaration von Variablen gleich sichtbar wird, um welche der beiden es sich handel, oeffene ich diesen Namensraum nicht, auch wenn nur eine Lienenart benutzt wird.
-
Sone schrieb:
Ordnung.
Kellerautomat schrieb:
Bullshit.
Damit hast du mal selbst argumentiert

-
Also bei größeren Projekten finde ich namespaces schon praktisch, weil man dadurch eben nochmal eine Ordnung in dem Sinne schaffen kann, dass man weiß, dass gewisse Klassen eben zu einem "Komplex" gehören. Selbst wenn es sich um irgendeinen Spezialbereich handelt, in dem es keine Namensüberschneidungen gibt, ist es einfach angenehmer zu wissen, was wozu gehört.
Und dann können die namespaces auch kongruent zu anderen Ordnungselementen stehen, beispielsweise zur Ordnerstruktur im Dateisystem (oder zusätzlich auch im MSVC-Projekt) oder auch zu Modulen, die einzeln kompiliert werden können.
Namenskonflikte gehen in meinen Augen aus fehlender Struktur/Ordnung hervor, sodass namespaces dieses Problem quasi im Keim ersticken.
-
Sone schrieb:
Damit hast du mal selbst argumentiert

Es stimmt schon, dass namespaces Ordnung schaffen koennen, aber das ist nicht ihr Hauptnutzen. Ihr beide habt das so hingestellt, als ware das deren einziger Zweck, und das ist einfach nicht wahr.
-
Kellerautomat schrieb:
Sone schrieb:
Damit hast du mal selbst argumentiert

Es stimmt schon, dass namespaces Ordnung schaffen koennen, aber das ist nicht ihr Hauptnutzen. Ihr beide habt das so hingestellt, als ware das deren einziger Zweck, und das ist einfach nicht wahr.
Konfliktvermeidung lässt sich in diesem Kontext auch auf Ordnung deduzieren, denn die Logik hierbei ist folgende:
Ordnung
Keine Konflikte 
Keine Ordnung
Es gibt Konflikte, weil die verschiedenen Namen nicht in Namensräumen eingeordnet wurden. 
Ein Namensraum ist schließlich wie eine Mappe, in der andere Mappen (andere Namensräume) oder eben auch Zettel (Namen) sind. Schmeisst man stattdessen alle Zettel in eine Mappe (Globaler Namespace), wird es unordentlich.
-
Gugelmoser schrieb:
Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p
Laut Stroustrup ist genau das aber IIRC ihr Zweck.
-
Meiner Meinung nach ist der Hauptzweck eines Namensraums die Einordnung der darin enthaltenen Dinge, wie Funktionen, Klassen, Objekte... Mittels using-Direktiven gehen die Klassifizierungen doch wieder verloren, dabei hat man sich doch vorher die Mühe gemacht, alles schön einzuordnen.
Dass Namensräume Namenskonflikte vermeiden, ist doch nur ein netter Nebeneffekt.
-
Die eigene Meinung ist nicht die Wirklichkeit. Den Fehler machen viele Leute.
-
Gugelmoser schrieb:
Meiner Meinung nach ist der Hauptzweck eines Namensraums die Einordnung der darin enthaltenen Dinge, wie Funktionen, Klassen, Objekte... Mittels using-Direktiven gehen die Klassifizierungen doch wieder verloren, dabei hat man sich doch vorher die Mühe gemacht, alles schön einzuordnen.
Dass Namensräume Namenskonflikte vermeiden, ist doch nur ein netter Nebeneffekt."Hauptzweck eines Autos ist meiner Meinung nach, ungestört Musik hören zu können. Auszusteigen und einen Fußweg zu gehen, statt einmal um den Block zu fahren ist blöd, da hört man ja nurnoch die Bässe. Dass man mit dem Auto auch von A nach B kommt ist ein netter Nebeneffekt."
Manche benutzen ihr Auto sicherlich so, und haben diese Meinung auch. Obs dazu erfunden wurde ist ne andere Frage

-
Diese Diskussion verwirrt mich ein wenig. Bisher habe ich auch immer std::string geschrieben, aber ohne einen konkreten Grund.
Wozu benötigt man Namespaces ? Und was sind Namespaces ?
Worum geht es hierbei eigentlich ? Das, gemäß Intellisense, vermutlich die komplette CRT in std:: abgebildete wurde ?

Gugelmoser schrieb:
Meiner Meinung nach ist der Hauptzweck eines Namensraums die Einordnung der darin enthaltenen Dinge, wie Funktionen, Klassen, Objekte... Mittels using-Direktiven gehen die Klassifizierungen doch wieder verloren, dabei hat man sich doch vorher die Mühe gemacht, alles schön einzuordnen.
Dass Namensräume Namenskonflikte vermeiden, ist doch nur ein netter Nebeneffekt.
"Hauptzweck eines Autos ist meiner Meinung nach, ungestört Musik hören zu können. Auszusteigen und einen Fußweg zu gehen, statt einmal um den Block zu fahren ist blöd, da hört man ja nurnoch die Bässe. Dass man mit dem Auto auch von A nach B kommt ist ein netter Nebeneffekt."
Diese Argumentation verstehe ich nicht. Noch keinen Deut.

-
Bitte ein Bit schrieb:
Diese Diskussion verwirrt mich ein wenig. Bisher habe ich auch immer std::string geschrieben, aber ohne einen konkreten Grund.
Wozu benötigt man Namespaces ? Und was sind Namespaces ?
Das sollte in jedem Buch erklärt sein, sogar im Internet solltest du jede Menge brauchbares Material finden.
Diese Argumentation verstehe ich nicht. Noch keinen Deut.

pumuckl zeigt durch eine (mMn passende) Analogie zu einem Autobeispiel, wie sehr gugelmosers Äußerungen zum Sinn und Zweck von Namespaces daneben waren.
-
(Sandkastenunterhaltung von Sone & Unreg auf den Müll verlegt)