Waarom wordt "using namespace std;" beschouwd als een slechte gewoonte?
Mij is door anderen verteld dat het verkeerd is om namenpace std;
in code te gebruiken, en dat ik in plaats daarvan std::cout
en std::cin
direct moet gebruiken.
Waarom wordt het gebruiken van de namespace std;
als een slechte praktijk beschouwd? Is het inefficiënt of riskeert het declareren van dubbelzinnige variabelen (variabelen die dezelfde naam hebben als een functie in std
namespace)? Heeft het invloed op de prestaties?
2466
3
Dit heeft helemaal niets te maken met prestatie. Maar bedenk dit: je gebruikt twee bibliotheken genaamd Foo en Bar:
Alles werkt goed, en je kunt
Blah()
van Foo enQuux()
van Bar zonder problemen aanroepen. Maar op een dag upgrade je naar een nieuwe versie van Foo 2.0, die nu een functie genaamdQuux()
aanbiedt. Nu heb je een conflict: Zowel Foo 2.0 als Bar importerenQuux()
in je globale namespace. Dit gaat wat moeite kosten om op te lossen, vooral als de functie parameters toevallig overeenkomen.Als je
foo::Blah()
enbar::Quux()
had gebruikt, dan zou de introductie vanfoo::Quux()
een non-event zijn geweest.Een andere reden is verrassing.
Als ik `cout
Het gaat allemaal om het beheren van complexiteit. Het gebruik van de namespace zal dingen naar binnen trekken die je niet wilt, en het dus mogelijk moeilijker maken om te debuggen (ik zeg mogelijk). Overal std:: gebruiken is moeilijker te lezen (meer tekst en zo).
Paarden voor cursussen - beheer je complexiteit hoe je dat het beste kunt en je daartoe in staat voelt.