Using ve namespace
C#

Using ve Namespace Kavramı

Programlama dillerinde programcıların işlerini kolaylaştırmak için bir takım hazır kütüphaneler mevcuttur. Bu kütüphanelerden bazıları standart olmakla birlikte bazıları kullanıcılar tarafından oluşturulur. .NET Framework dediğimiz altyapının çatısı altında toplanan bu kütüphaneler Base Class Library (Temel Sınıf Kütüphaneleri) adı verilen kütüphanelerdir. Temel Sınıf Kütüphaneleri uygulamalarımızı geliştirirken lazım olabilecek birçok sınıfı ve nesneyi içinde barındıran bir sistemdir. .NET ortamında bulunan bu sınıflar ve nesneler kategorize edilmiş bir şekilde ilgili kütüphanelerinin içinde yer alırlar. Bunları kullanabilmemiz için programlarımızın en başında bu kütüphaneleri çağırmamız gerekir. Teknik olarak ifade etmek gerekirse bunları referans olarak belirtmemiz gerekir.  Bunun için gerekli olan “using” anahtar kelimesidir. Kelime anlamı “kullanmak” olan using; herhangi bir namespace’i projemize ekleyerek sayfada yapılan işlemlerde kullanabilmemizi sağlar. Başka bir kullanım amacı ise tanımlanan bir nesnenin Dispose edilmesini garantilemek yani ram’den atılmasını sağlamak için kullanılır. Bunun belirli şartları vardır. Fakat ben bu yazımda buna değinmeyeceğim. Sadece using ve namespace’in öneminden, bu iki kavramın birbirleri ile olan ilişkilerinden ve projemize nasıl ekleyeceğimizden bahsedeceğim.

Yukarıda adı çokça geçen namespace kavramından bahsedelim. Namespace kelime anlamı “İsim Alanı” olan; aynı amaca hizmet eden özellikleri, sınıfları ve fonksiyonları bir çatı altında toplayan yapıdır. Sadece tek bir programlama diline özgü bir şey değildir. Tüm dillerde var olan bir kavramdır.

Namespace neden önemlidir?

Her sorun gibi namespace’de bir ihtiyaçtan doğmuştur. Nesne tabanlı dillerden önce (örneğin C dilinde) oluşturduğumuz bir sınıf veya değişken ismi proje genelinde bir daha kullanılamamaktaydı. Bu durumu önlemek kod okunabilirliğini sağlamak için benzer özellikte işleve sahip kod blokları, namespace dediğimiz yapı altında toplanmış ve kullanılmak istenilen sınıfın özelliklerine göre kod sayfasına eklenerek kullanılabilir hale gelmiştir.

Using

Yukarıdaki görselde .NET ailesinden olan C# programlama dilinin geliştirme ortamından alınmış, projede kullanılacak kütüphanelerin “using” ifadesiyle projenin üst kısmına tanımlandığını görmektesiniz.

.NET ortamında bulunan bu kütüphanelerin bazıları ve en sık kullanılanları şunlardır:

System : Temel sınıfları içerir. Tüm sınıf kütüphaneleri bu isim alanı içinde kümelenmiştir.

System.Data : Veritabanı işlemlerinin tamamına bu isim alanı ile erişilir. Alt kütüphaneleri de mevcuttur.

System.Xml : Veri biçimlendirme ve internetten veri paylaşımı için en çok kullanılan teknolojilerden biri olan XML sınıflarını içeren kütüphanedir.

System.Net : http ve ağ protokollerini içeren isim alanıdır.

System.IO : Giriş (Input) ve Çıkış (Output) işlemleri için kullanılan sınıflar bu kütüphane içinde yer alır.

System.Windows.Forms : Grafiksel olarak kullanıcı ara yüzünde kullanılan görsel kontrolleri barındıran sınıfların bulunduğu isim alanıdır.

Tabi .NET Framework kütüphanesi bunlarla sınırlı değil, Kompleks grafik çizimleri, daha gelişmiş grafiksel çizimler, network işlemleri, güvenlik işlemleri, veritabanı, çoklu ortam (multimedia) gibi diğer birçok kategoride ilgili kütüphaneler vardır. .NET kütüphaneleri hakkında daha fazla bilgiye .Net Framework Class Library bu linkten ulaşabilirsiniz.

Bu linkte kütüphaneler alfabetik olarak listelenmiştir. Burada herhangi bir kütüphaneye tıkladığınızda o kütüphane içindeki sınıflara erişebilir hatta bununla kalmaz sınıf içine de girebilir, mevcut sınıfa bağlı olan ilgili metodları, syntax yapısını, sınıfın özelliklerini ve kullanım şekillerini görebilirsiniz.

Aklınıza şöyle bir soru gelebilir. Neden bu namespace’ler tek bir çatı altında değil de farklı gruplar halinde oluşturulmuş?

Buna da şöyle cevap vereyim:

Namespace’leri oluşturan sınıflar ve nesneler eğer kategorize edilmiş bir şekilde gruplandırılmasaydı ve projemizde bu şekilde kullanacak olsaydık bu bizim zararımıza olurdu. Şimdi şöyle düşünelim.

Tüm programcılar bilir ki bir programlama dilindeki tüm kodlara hakim olmak mümkün değildir. Kimi resim, video işleme konusunda uzmanken kimisi de veritabanı üzerine işlemlerde uzmanlaşmıştır. Buna değişik örnekler verilebilir. Bunun gibi yapılabilecek tüm işlemler tek bir çatı altında toplanacak olsaydı ve biz örnek veriyorum sadece veritabanı üzerinde bir işlem yapacak olsaydık diğer tüm kullanmadığımız sınıflar ve nesneler, programımızda gereksiz yere bellekte alan kaplamaktan başka bir işe yaramayacaktı. Bu da programımızın performansını olumsuz etkilerdi. Sadece bu da değil yazılım geliştirmede kullandığımız IDE ( Integrated Development Environment )’ler olsun, Kod editörleri olsun tüm platformların genelinde bulunan, kod yazarken bize yardımcı olan Intellisense (kod tahmin aracı) ekranında program için gerekli gereksiz çok fazla kod olacaktı. Bu da bizim yanlış kodları seçmemize neden olabilirdi. Ayrıca Bknz : Namespace Yapısı ve Kullanımı

Başvurulan Kaynaklar

https://caylakyazilimci.com/post/namespace-nedir

https://docs.microsoft.com/en-us/previous-versions/ms229335(v=vs.100)?redirectedfrom=MSDN

https://mustafabukulmez.com/2018/03/15/c-sharp-namespace-kavrami/#close

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir