Type Safety (Tip — Tür Güvenliği)
Özetle derleyicilerin, derleme esnasında değişkenleri doğrulamasıdır.
Biraz açalım.
Sayı değeri alan bir değişkenimiz olduğunu düşünün. Bu değişkenimize daha sonrasında string bir değer atamamamız gerekir. Ama bazen dalgınlığımıza gelir böyle hatalar yapabiliriz. Bu hatalar bizlere zaman kaybettirir. Eğer bir uygulama aceleye gelmiş ve testi az yapılmış ise uygulama canlıya çıktıktan sonra kullanıcılar hatanın yapıldığı ekrana girince uygulama çöker, beklediklerinden farklı sonuçlar alır. Ondan sonra şikayetler yağar. Şimdi ara dur hata neden kaynaklanıyor?
Bu tarz durumların oluşmasını engellemek için diller ve derleyicilerin iş birliği ile type-safety kavramı ortaya çıktı.
Derleyiciler compile time anında değişkenlere doğru değerler atanıp atanmadığını kontrol ederler. Değişkenlere yanlış değer atanmış olması halinde derleme esnasında hata verir ve runtime anındaki oluşabilecek hataların önüne geçilmiş olur. Hatta bazı derleyiciler kod yazma anında değişkene yanlış tipte bir veri atamamız halinde bizi uyarırlar.
Şimdi birkaç örnek inceleyelim.
Örneğin Java type safe bir dil iken JavaScript type safe bir dil değildir.
Javascriptte bir değişken yazarken tipini belirtme zorunluluğu yoktur. Buna Type Inference (Tip çıkarımı) denir. Bu sayede int olarak ilk değerini almış bir değişkene daha sonra string bir değer atanabilir. Buda o değişkeni kullanacağımız yerlerde hatalar almamıza sebep olacaktır.
Yukarıdaki kod parçacığında int olan bir değişkene string bir değer atamamıza rağmen herhangi bir hata , uyarı almadık.
Javada bir değişken yazarken tipinin ne olduğunu belirtmek zorundasınız. Daha sonra o değişkene o tip dışındaki bir veri atayamazsınız. Hem kod anında, hemde derleme esnasında hata alırsınız.
Yukarıdaki kod parçacığında int türünden tanımladığımız değişkenimize string verdiğimizde kod yazarken ve derleme esnasında hata alıyoruz. Bu hatayı almamız Type Safety kavramıdır.
Şöyle bir problemimiz olsun. Bir manav dükkanına bir dayımız gitmiş olsun. Bu dayımız 1 kilo elma, 3 kilo portakal, 10 kilo muz alsın. Bizde bu dayımızın ödeyeceği toplam ücreti gösteren bir program yazalım.
Bu problemi type safety olmayan bir dilde yazarsak, dalgınlık anında int değer alması gereken bir değişkene string değer verirsek, derleyici ne kod yazarken, ne derleme anında, ne de çalışma anında bize bir hata vermezse alacağımız sonuç
gibi absürt bir veri olur. Biz toplam ücret olarak bir sayı beklerken bambaşka bir yazı çıktı. Type safety işte burada devreye giriyor.
Şimdi de bunu Javada yazalım.
Dikkat ederseniz daha kodu yazarken kodun altı kızarıyor, hata veriyor. Farz edelim ki dalgınlığımız o kadar üzerimizde ki onu da göremedik. Kodu derlemeye başladığımız zaman derleyici bize
gibi bir hata verir. Bu sayede uygulamamızı canlıya çıkarmadan hatamızı düzeltmiş oluruz.
Daha fazla örnek incelemek için buraya tıklayabilirsiniz.
Dipnot: Java ile JavaScript arasında isim benzerliği dışında pek bir benzerlik yoktur. Netscape firması JavaScripti piyasaya süreceği sıralar Sun Microsystem tarafından geliştirilen Java popüler bir dildi. Netscape firması da Javanın bu popülerliğinden yararlanmak için JavaScript ismini kullandı ve amacına da ulaştı.
Özetle type safety, derleyicilerin kodu derlerken değişkenlerimizin tipleri ile atanan değerlerin tipleri arasında farklılık olması durumunda hata vermesi ve kodu derlememesidir. Tip validasyonu yapmasıdır.
Bir yazının daha sonuna geldik. Basit ama önemli bir kavram olan Type Safety kavramını anlatmaya çalıştım. Beğendiyseniz 👏 butonuna basarsanız sevinirim. Daha fazla insanın faydalanması için de paylaşmanızı rica ederim. Sonraki yazımda görüşmek üzere kendinize iyi bakın.