İçeriğe geç
parazade

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?
İçindekiler
  1. Namespace nedir?
  2. Dillere göre örnekler
  3. Kullanırken nelere dikkat etmeli?

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.

İlgili terimler

Modül(Module)Modül, belirli bir işe ait fonksiyonları, sınıfları ve değişkenleri bir arada tutan, programın geri kalanından ayrı bir kod birimidir. Genellikle tek bir dosyadır ve başka dosyalardan import edilerek kullanılır.Kapsam(Scope)Kapsam (scope), programlamada bir değişkenin, fonksiyonun ya da adın kodun hangi bölümünden görülebileceğini ve kullanılabileceğini belirleyen kurallar bütünüdür. Global, fonksiyon ve blok kapsamı en yaygın türlerdir.Kütüphane(Library)Yazılımda kütüphane (library), belirli işleri yapmak için önceden yazılmış ve tekrar kullanılabilir kod koleksiyonudur. Geliştirici, aynı işi sıfırdan yazmak yerine kütüphanenin fonksiyonlarını çağırarak zaman kazanır.ImportImport, programlamada başka bir dosyadaki ya da kütüphanedeki kodu mevcut dosyada kullanılabilir hâle getiren içe aktarma komutudur. Python, JavaScript ve Java gibi dillerde modüller ve paketler bu yolla çağrılır.Sınıf(Class)Sınıf (class), nesne yönelimli programlamada aynı türden nesnelerin hangi verileri ve davranışları taşıyacağını tanımlayan şablondur. Sınıftan üretilen her somut örneğe nesne denir.C#C# (si şarp), Microsoft'un geliştirdiği, .NET platformunda çalışan, nesne yönelimli ve genel amaçlı bir programlama dilidir. Masaüstü, web, oyun ve kurumsal uygulamalarda yaygın kullanılır.PHPPHP, özellikle dinamik web siteleri ve web uygulamaları geliştirmek için kullanılan, sunucu tarafında çalışan açık kaynaklı bir betik dilidir; WordPress ve Laravel gibi yaygın araçlar PHP ile yazılmıştır.