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?
2466
3
Bunun performansla hiçbir ilgisi yoktur. Ancak şunu düşünün: Foo ve Bar adında iki kütüphane kullanıyorsunuz:
Her şey düzgün çalışır ve Foo'dan
Blah()
ve Bar'danQuux()
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ıkQuux()
adında bir işlev sunuyor. Şimdi bir çakışma var: Hem Foo 2.0 hem de Bar global isim alanınızaQuux()
import ediyor. Bunu düzeltmek biraz çaba gerektirecektir, özellikle de fonksiyon parametreleri eşleşiyorsa.Eğer
foo::Blah()
vebar::Quux()
kullanmış olsaydınız,foo::Quux()
un devreye girmesi bir olay olmazdı.Bir başka neden de sürprizdir.
Eğer `std::cout
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.