Dart Null Safety

Estimated read time 4 min read

Dart’a null safety eklenmesi, dilin gelişiminde büyük bir sıçramaya işaret ediyor. Flutter’a güç veren bir dil olarak Dart’ın null safety özelliği, uygulama kararlılığını ve çalışan verimliliğini büyük ölçüde artırıyor. Peki, Dart’ta null safety neleri içerir ve yazılımcılar neden önemsemelidir? Hadi başlayalım.

Null Safety: Temel Bilgiler

Null safety Dart 2.12’de eklenen bir özelliktir. Halk arasında “milyar dolarlık hata” olarak bilinen boş referans durumlarına karşı önleyici bir adımdır. Boş referans istisnaları, bir program boş bir nesnenin özelliklerine veya yöntemlerine ulaşmaya çalıştığında ortaya çıkar ve bu da çalışma zamanı hatalarına yol açar.

Null safetyden önce, bir Dart değişkeni bir değer tutabilir ya da boş olabilirdi. Bu netlik eksikliği, boş bir değer yanlış kullanıldığında çalışma zamanında hatalara ve sorunlara yol açabilir.

Null safety ile, değişkenler varsayılan olarak nullable değildir, yani null değer tutamazlar. Bir değişkenin null değer tutabilmesini istiyorsanız, onu doğrudan nullable olarak tanımlamanız gerekir.

Nullable ve Nullable Olmayan Türleri Anlama

Null güvenliği ile her Dart tipi iki çeşide ayrılır:

1- Non-Nullable: Nullable olmayan bir değişken, asla null olmayacağından emin olduğunuz bir değişkendir. Örneğin:

int a = 10;

Örnekte, a değeri nullable değildir ve asla null olarak tutulamaz. Eğer a değerini null olarak ayarlamaya çalışırsanız, Dart analizörü bir hata gösterecektir.

2- Nullable: Nullable bir değişken, null tutabilen bir değişkendir. Bir değişkeni, türüne bir soru işareti (?) ekleyerek nullable yaparsınız. Örneğin:

int? a = null;

Bu durumda a, bir tamsayı değeri ya da null tutabilen nullable bir tamsayıdır.

The Late Anahtar Kelimesi

Bazı durumlarda, henüz bir değer tutmaya hazır olmayan nullable olmayan değişkenleriniz olabilir. Bu durum için Dart ‘late’ terimini sunar. late anahtar sözcüğü Dart’a değişkenin kullanılacağı zaman null olmayan bir değere sahip olacağını söyler. Örnek:

late String isim;

void setIsim(String str) {
  isim = str;
}

Yukarıdaki kodda, ‘isim’ kullanılmadan önce bir değere sahip olacaktır, ancak bir değer atamadan önce onu kullanmaya çalışırsanız, Dart bir hata verecektir.

Null Kontrol Operatörü

Dart, nullable bir türü eşleşen nullable olmayan türle değiştirmek için null kontrol operatörünü (!) sunar. Alan null olmayan bir sayı içeriyorsa, doğrudan döndürülür. Ancak değer null ise, Dart bir exception fırlatır.

int? a = null;
int b = a!; // Bu satır bir exception fırlatacaktır

Bu operatör, bir değişkenin null olmayacağından emin olduğunuzda işe yarar.

Sound Null Safety

Sağlam null güvenliği, Dart’ta siz açıkça kabul etmediğiniz sürece tiplerin asla null olmayacağına dair güçlü bir sözdür. Bu çeşitli faydalar sağlar:

  • Çalışma zamanında null referans hatalarını önler.
  • Dart motorunun kodunuzu daha etkili bir şekilde geliştirmesine yardımcı olarak daha yüksek hız sağlar.
  • Null hatalarını çalışma zamanı yerine geliştirme sırasında yakalayarak çalışanların daha etkili olmasına yardımcı olur.

Dart sisteminizin null güvenli olup olmadığını kontrol etmek için dart –version komutunu çalıştırın. Eğer sürüm 2.12 veya üzerindeyse, null güvenliğine sahipsiniz demektir.

Mevcut bir Dart projesini null güvenliğine taşımak için dart migrate aracını kullanabilirsiniz.

Sonuç

Dart’ın null safety’si geliştiriciler için çok önemli bir özelliktir ve hem uygulama kararlılığını hem de geliştirme hızını büyük ölçüde artırır. Bu kılavuzda null safety fikri incelenmiş, nullable ve non-nullable tipler arasında ayrım yapılmış, late teriminin rolü anlaşılmış ve null check operatörünün kullanımı gösterilmiştir.

Dart ile yolculuğunuza devam ederken, null safety hakkında derinlemesine bilgi sahibi olmak, daha güvenilir ve güçlü uygulamalar geliştirmenizde size kesinlikle yardımcı olacaktır.

batikan

Araştırma ve geliştirme, veri analizi veya yapay zeka uygulamaları geliştirme gibi alanlarda bilgili ve deneyimli Bilgisayar Mühendisi. Üniversitede Bilgisayar Mühendisliği bölümünü 3 yılda tamamlamış, Görüntü İşleme, Java Spring, Makine Öğrenmesi, Derin Öğrenme ve Blockchain gibi alanlarda bilgi ve deneyim sahibi. Yapay Zeka gibi alanlarda bilgili, yenilikçi çözümler üretmeye hevesli, takım çalışmasına ve yeni fikirlere açık biri.

You May Also Like

More From Author

+ There are no comments

Add yours