Mir wurde von anderen gesagt, dass es falsch ist, "Namensraum std" im Code zu verwenden, und dass ich stattdessen direkt "std::cout" und "std::cin" verwenden sollte.
Warum wird die Verwendung des Namespace std;als schlechte Praxis angesehen? Ist es ineffizient oder besteht die Gefahr, dass zweideutige Variablen deklariert werden (Variablen, die den gleichen Namen wie eine Funktion im
std`-Namensraum haben)? Hat es Auswirkungen auf die Leistung?
Dies hat nichts mit der Leistung zu tun. Aber bedenken Sie Folgendes: Sie verwenden zwei Bibliotheken namens Foo und Bar:
using namespace foo;
using namespace bar;
Alles funktioniert gut, und Sie können Blah()
von Foo und Quux()
von Bar ohne Probleme aufrufen. Aber eines Tages aktualisieren Sie auf eine neue Version von Foo 2.0, die nun eine Funktion namens Quux()
bietet. Jetzt haben Sie einen Konflikt: Sowohl Foo 2.0 als auch Bar importieren Quux()
in Ihren globalen Namespace. Es wird einige Mühe kosten, dies zu beheben, besonders wenn die Funktionsparameter übereinstimmen.
Wenn Sie foo::Blah()
und bar::Quux()
verwendet hätten, dann wäre die Einführung von foo::Quux()
ein Nicht-Ereignis gewesen.
Ein weiterer Grund ist die Überraschung.
Wenn ich cout << blah
sehe, statt std::cout << blah
, denke ich: Was ist dieses cout
? Ist es der normale cout
? Ist es etwas Besonderes?
Es geht darum, die Komplexität zu beherrschen. Durch die Verwendung des Namensraums werden Dinge hineingezogen, die man nicht haben will, was die Fehlersuche möglicherweise erschwert (ich sage: möglicherweise). Die Verwendung von std:: überall ist schwieriger zu lesen (mehr Text und all das).
Pferde für Kurse - verwalten Sie Ihre Komplexität, wie Sie am besten können und sich in der Lage fühlen.