Warum wird "Verwendung des Namensraums std;" als schlechte Praxis angesehen?
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?
2466
3
Dies hat nichts mit der Leistung zu tun. Aber bedenken Sie Folgendes: Sie verwenden zwei Bibliotheken namens Foo und Bar:
Alles funktioniert gut, und Sie können
Blah()
von Foo undQuux()
von Bar ohne Probleme aufrufen. Aber eines Tages aktualisieren Sie auf eine neue Version von Foo 2.0, die nun eine Funktion namensQuux()
bietet. Jetzt haben Sie einen Konflikt: Sowohl Foo 2.0 als auch Bar importierenQuux()
in Ihren globalen Namespace. Es wird einige Mühe kosten, dies zu beheben, besonders wenn die Funktionsparameter übereinstimmen.Wenn Sie
foo::Blah()
undbar::Quux()
verwendet hätten, dann wäre die Einführung vonfoo::Quux()
ein Nicht-Ereignis gewesen.Ein weiterer Grund ist die Überraschung.
Wenn ich `cout
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.