Neden "using namespace std;" kötü bir uygulama olarak kabul edilir?

Başkaları tarafından kodda using namespace std; yazmanın yanlış olduğu ve bunun yerine doğrudan std::cout ve std::cin kullanmam gerektiği söylendi.

Neden using namespace std; kötü bir uygulama olarak kabul edilir? Verimsiz midir yoksa belirsiz değişkenler (std ad alanındaki bir işlevle aynı adı paylaşan değişkenler) bildirme riski var mıdır? Performansı etkiler mi?

Çözüm

Bunun performansla hiçbir ilgisi yoktur. Ancak şunu düşünün: Foo ve Bar adında iki kütüphane kullanıyorsunuz:

using namespace foo;
using namespace bar;

Her şey düzgün çalışır ve Foo'dan Blah() ve Bar'dan Quux() işlevlerini sorunsuzca çağırabilirsiniz. Ancak bir gün Foo 2.0'ın yeni bir sürümüne geçtiniz ve bu sürüm artık Quux() adında bir işlev sunuyor. Şimdi bir çakışma var: Hem Foo 2.0 hem de Bar global isim alanınıza Quux() import ediyor. Bunu düzeltmek biraz çaba gerektirecektir, özellikle de fonksiyon parametreleri eşleşiyorsa.

Eğer foo::Blah() ve bar::Quux() kullanmış olsaydınız, foo::Quux()un devreye girmesi bir olay olmazdı.

Yorumlar (39)

Bir başka neden de sürprizdir.

Eğer `std::cout

Yorumlar (5)

Her şey karmaşıklığı yönetmekle ilgili. İsim alanını kullanmak, istemediğiniz şeyleri içeri çekecek ve böylece muhtemelen hata ayıklamayı zorlaştıracaktır (muhtemelen diyorum). Her yerde std:: kullanmak okumayı zorlaştırır (daha fazla metin ve hepsi bu).

Her koyun kendi bacağından asılır - karmaşıklığınızı elinizden geldiğince ve kendinizi en iyi hissettiğiniz şekilde yönetin.

Yorumlar (0)