Varför anses "använda namespace std;" vara dålig praxis?
Andra har sagt till mig att det är fel att skriva using namespace std;
i kod och att jag borde använda std::cout
och std::cin
direkt i stället.
Varför anses using namespace std;
vara en dålig metod? Är det ineffektivt eller riskerar man att deklarera tvetydiga variabler (variabler som har samma namn som en funktion i namnområdet std
)? Påverkar det prestandan?
2466
3
Detta har inte alls med prestationer att göra. Men tänk på följande: Du använder två bibliotek som heter Foo och Bar:
Allt fungerar bra och du kan anropa
Blah()
från Foo ochQuux()
från Bar utan problem. Men en dag uppgraderar du till en ny version av Foo 2.0, som nu erbjuder en funktion som heterQuux()
. Nu har du en konflikt: Både Foo 2.0 och Bar importerarQuux()
till ditt globala namnområde. Det här kommer att kräva en del arbete att åtgärda, särskilt om funktionsparametrarna råkar stämma överens.Om du hade använt
foo::Blah()
ochbar::Quux()
skulle införandet avfoo::Quux()
ha varit en icke-händelse.Ett annat skäl är överraskningen.
Om jag ser `cout
Allt handlar om att hantera komplexiteten. Om du använder namnområdet kommer du att få in saker som du inte vill ha, och därmed kan det eventuellt bli svårare att felsöka (jag säger eventuellt). Att använda std:: överallt är svårare att läsa (mer text och allt det där).
Hästar för kurser - hantera din komplexitet på det sätt du bäst kan och känner dig kapabel till.