Type Safety (Tip — Tür Güvenliği)
Tags: compilers, java, javascript, typesafety
Published: 2022-06-17 07:00:46

---
title: Type Safety (Tip — Tür Güvenliği)
published: true
date: 2022-17-06 16:55:26 UTC
tags: compilers,java,javascript,typesafety
canonical_url: 
---

### Type Safety (Tip — Tür Güvenliği)

![](https://cdn-images-1.medium.com/max/700/1*oQyVuMX97S5g7ivK3JjbHQ.jpeg)

> Ö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.

![](https://cdn-images-1.medium.com/max/414/1*f1K7hpD7JVbvW49DRtv-1w.jpeg)
_JavaScripte type safety olmaması_

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.

![](https://cdn-images-1.medium.com/max/505/1*IaL1lL19dH-zyjwcWYmDng.jpeg)
_Javada type safety_

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.

![](https://cdn-images-1.medium.com/max/916/1*SymRdKQMwkJi2bK7J0Cm8w.jpeg)
_Problem çözümüne ilişkin JavaScript kodu (Visual Studio Code)_

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ç

![](https://cdn-images-1.medium.com/max/915/1*jSN9lbJ-Q0OETpWldn_Rrg.jpeg)
_Type Safety olmayan bir dilde olabilecekler_

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.

![](https://cdn-images-1.medium.com/max/1004/1*GTOi2i3ZfWmWpBRWl8SN8w.jpeg)
_Probleme ilişkin Java kodu_

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

![](https://cdn-images-1.medium.com/max/802/1*tcQ93Xr8dgN8C4GriSNQuQ.jpeg)
_Type Safety hatası_

gibi bir hata verir. Bu sayede uygulamamızı canlıya çıkarmadan hatamızı düzeltmiş oluruz.

Daha fazla örnek incelemek için [buraya](https://stackoverflow.com/questions/260626/what-is-type-safe)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.