ProgramlamaBackend Geliştirici

Kotlin'de "val" ve "var" anahtar kelimeleri arasındaki fark nedir? Bunları kodun güvenliği ve performansı açısından en iyi şekilde nasıl kullanabilirsiniz?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

val ve var her ikisi de değişken tanımlamak için kullanılır, ancak temel farklılıklar vardır:

  • val (değer): değiştirilemez, yalnızca okunabilir bir referans tanımlar. Başlatma işleminden sonra değeri yeniden atanamaz, referans her zaman tek bir nesneye işaret eder:
val number = 42 // number = 10 // hata!
  • var (değişken): değiştirilebilir bir değişken tanımlar;
var counter = 0 counter++ // izinlidir

Güvenlik ve Performans:

  • Değişkenin değişmeyeceği her yerde val kullanmak tercih edilir — bu, rastgele değişikliklerden korur ve kodun daha anlaşılır olmasını sağlar.
  • val kullanmak, derleyicinin ve IDE'nin hataları derleme aşamasında yakalamasını ve kodu optimize etmesini sağlar.

Fısıldayan Soru.

val olarak tanımlanan bir nesne değiştirilebilir mi?

Cevap: Değişkenin kendisinin değeri (referansı) yeniden atanamaz, ancak bu bir nesne (örneğin, bir liste) ise, iç durumu değiştirilebilir.

val list = mutableListOf(1,2) list.add(3) // Mümkün! Ancak list = başkaListe hatalı olur.

Konuyla ilgili bilinmeyen ince ayrıntılar nedeniyle gerçek hata örnekleri.


Hikaye

Bir e-ticaret projesinde, geliştirici ürün listesini val items = mutableListOf<Product>() olarak tanımlamış, böylece listenin tamamen değiştirilemez olduğunu düşünmüştü. Aslında başka bir yerde liste değiştirilmiş (yeni bir öğe eklenmiş) ve bu, sepetin görüntülenmesini beklenmedik şekilde etkilemiştir.


Hikaye

Büyük metin dosyalarını ayrıştıran bir araçta, dizi tamponu var buffer olarak tanımlanmıştı, oysa ayrıştırma işlemi sırasında değiştirilmesine gerek yoktu. Yanlışlıkla yeni bir diziye yeniden atama yapıldı ve bu, bellek sızıntısına ve yanlış veri işlenmesine yol açtı.


Hikaye

Bir mikro hizmet kodunda, çoğu değişken "her ihtimale karşı" var olarak tanımlanıyordu, sonuç olarak büyük ifadelerde bazen nesnenin durumu farklı iş parçacıklarında değiştiriliyordu, bu da yarış durumu nedeniyle zor tespit edilen hatalara yol açıyordu.