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 imstd`-Namensraum haben)? Hat es Auswirkungen auf die Leistung?

Lösung

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.

Kommentare (39)

Ein weiterer Grund ist die Überraschung.

Wenn ich `cout

Kommentare (5)

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.

Kommentare (0)