crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Namespace: Kodunuzu Mantıksal Gruplara Ayırın
Namespace'leri birer "soyadı" veya "dosya klasörü" gibi düşünebilirsiniz. Aynı isimdeki iki kişi, soyadları (namespace) farklı olduğu sürece birbirine karıştırılmaz.
1. std:: Nedir ve Neden Her Yerde Var?
std, C++ Standart Kütüphanesinin (Standard Library) kısaltmasıdır. C++ ile gelen tüm hazır araçlar (cout, vector, string, sort vb.) std isim uzayının içinde tanımlanmıştır.
Bir aracı kullanmak istediğinizde, onun hangi uzaya ait olduğunu :: (Scope Resolution Operator - Kapsam Çözünürlük Operatörü) ile belirtmeniz gerekir:
C++:
std::cout << "Merhaba Dünya"; // std uzayındaki cout'u kullan.
2. Kendi Namespace'inizi Oluşturma
Kendi kodlarınızı korumak için basitçe namespace anahtar kelimesini kullanabilirsiniz:
C++:
namespace VeriTabani {
void baglan() {
std::cout << "Veritabanina baglanildi." << std::endl;
}
}
namespace OyunMotoru {
void baglan() {
std::cout << "Sunucuya baglanildi." << std::endl;
}
}
int main() {
VeriTabani::baglan(); // Belirsizlik yok
OyunMotoru::baglan(); // Hangi 'baglan' oldugu net
}
3. using namespace std; Kullanımı (Tehlikeli mi?)
Yeni başlayanlar genellikle her seferinde std:: yazmamak için kodun başına using namespace std; ekler. Bu, o uzaydaki her şeyi "yerel" hale getirir.
Avantajı: Daha hızlı kod yazımı, temiz görünüm.
Dezavantajı: İleride projenize başka bir kütüphane eklediğinizde isim çakışması riski. Örneğin, kendi yazdığınız bir count fonksiyonu ile std::count çakışabilir.
Profesyonel İpucu: Büyük projelerde ve .h (başlık) dosyalarında asla using namespace kullanmayın. Bunun yerine sadece ihtiyacınız olanı çekin: using std::cout;
4. Namespace'lerin Diğer Özellikleri
[]İç İçe Namespace (Nested): namespace Kurumsal::Muhasebe { ... } şeklinde hiyerarşik yapılar kurabilirsiniz.
[]Namespace Alias (Takma Ad): Uzun isimleri kısaltabilirsiniz:
C++:namespace nm = Kurumsal::Muhasebe::VergiHesaplama;- Anonim Namespace: İsmi olmayan bir namespace içindeki değişkenler sadece o dosya içinde (private gibi) geçerlidir.
Sonuç
Namespace kullanımı, kodunuzun profesyonelliğini ve taşınabilirliğini belirler. Kendi kütüphanelerinizi yazarken mutlaka bir namespace içine hapsedin; böylece kodunuzu kullanan diğer yazılımcılara "isim çakışması" kabusu yaşatmazsınız.