Namespace Nedir?
Yayın: · Son güncelleme:
Namespace Nedir? Kısaca
Namespace (ad alanı), fonksiyon, sınıf ve değişken adlarını mantıksal gruplar altında toplayarak farklı kütüphanelerdeki aynı adların birbiriyle çakışmasını önleyen yapıdır. C++, C#, PHP ve Python gibi dillerde kullanılır.

Namespace nedir?
Namespace, adlara bir soyadı vermek gibidir. İki farklı kütüphanede Logger adlı bir sınıf olabilir; her biri kendi ad alanında durduğunda program hangisini kastettiğinizi bilir. Böylece büyük projelerde ad çakışmaları önlenir.
Gündelik bir benzetme yapalım. Bir şirkette iki Ahmet varsa "muhasebeden Ahmet" ve "satıştan Ahmet" diye ayırırsınız. Namespace, kodda bu "muhasebeden" kısmının karşılığıdır.
Dillere göre örnekler
C++'ta standart kütüphanenin tamamı std ad alanındadır. Ekrana yazı basmak için std::cout yazılır; buradaki :: işareti "std içindeki cout" anlamına gelir. C#'ta System.Collections.Generic gibi noktalı ad alanları kullanılır ve dosyanın başına using satırı eklenerek kısaltılır.
PHP'de namespace App\Models gibi bir satırla tanımlanır. Python'da ayrı bir anahtar sözcük yoktur, her modül ve paket kendiliğinden bir ad alanı oluşturur. math.sqrt yazdığınızda sqrt fonksiyonunu math ad alanından çağırmış olursunuz.
Kullanırken nelere dikkat etmeli?
Ad alanlarının faydası, onları kısaltırken kolayca kaybolur. C++'ta dosyanın başına "using namespace std;" yazmak kısa programlarda pratiktir ama büyük projelerde başka kütüphanelerle çakışmaya yol açabilir. Python'da "from modul import *" kullanımı da aynı riski taşır.
İyi bir uygulama, ad alanlarını proje yapısına göre düzenlemektir. Örneğin bir e-ticaret projesinde Magaza.Odeme ve Magaza.Kargo gibi ayrım, hem çakışmayı önler hem kodu okuyan kişiye nerede olduğunu gösterir.
Sıkça Sorulan Sorular
Namespace ile modül aynı şey mi?
Tam olarak değil. Modül, kodun bulunduğu dosya ya da paket birimidir. Namespace ise adların gruplandığı mantıksal alandır. Python'da her modül kendi ad alanını oluşturduğu için iki kavram iç içe geçer.
Kubernetes'teki namespace aynı anlama mı gelir?
Benzer bir fikirdir. Kubernetes'te namespace, aynı küme içindeki kaynakları, örneğin test ve canlı ortam servislerini, birbirinden ayırmak için kullanılan mantıksal bölümdür.