Generics Nedir? Tip Güvenliğini Sağlayan Programlama Aracı

Generics, bir fonksiyon ya da sınıfın birden fazla veri tipiyle çalışmasını sağlayan bir programlama özelliğidir. Aynı kodu tekrar tekrar yazmak yerine, tipi esnek tutup çalışma zamanında belirlersin.

Bunu anlamanın en kolay yolu bir örnek üzerinden gitmek. Diyelim ki bir liste oluşturacaksın ve bu listeye sadece sayılar ekleyeceksin. Generics olmadan, listeye her türlü veri girebilir, sonra hata alırsın. Generics'le listeyi baştan "bu liste sadece sayı tutar" diye tanımlarsın ve derleyici (kodu çalıştırılabilir hale getiren araç) sana hatalı veri eklemeye izin vermez.

Java'da basit bir örnek:

1ArrayList<String> isimler = new ArrayList<>();
2isimler.add("Ali");
3isimler.add("Fatma");
4// isimler.add(123); // Hata! Integer eklenemez

Burada <String> generics'in tür parametresidir. Listeye sadece yazı ekleyebilirsin. Eğer generics kullanmasaydın, her çıkardığın veriyi manuel olarak dönüştürmek (casting) zorunda kalırdın ve hataya açık olurdu.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Generics'in asıl faydası üç noktada toplanır. Birincisi, tip güvenliği sağlar; yanlış tipte veri eklemeye çalışırsan hemen derleyici uyarır. İkincisi, kodun okunabilirliğini artırır; bakana ne tür veri beklediği hemen belli olur. Üçüncüsü, tekrarlayan kodu azaltır; aynı işlemi farklı tipler için yazman gerekmez.

TypeScript'te de benzer şekilde çalışır:

1function birinci<T>(dizi: T[]): T {
2return dizi[0];
3}
4
5const sayi = birinci([1, 2, 3]); // T = number
6const metin = birinci(["a", "b"]); // T = string

Bu örnekte <T> bir placeholder gibi davranır. Fonksiyonu çağırdığında T otomatik olarak doğru tipe ayarlanır.

Generics'i iyi kullanmak, özellikle kütüphane ya da framework yazarken, kodun yeniden kullanılabilirliğini ve bakımını çok kolaylaştırır. Başlangıçta biraz soyut görünse de, bir kez alıştığında kodun güvenliğini ve netliğini önemli ölçüde artırdığını fark edersin.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz