Null Safety:?. ve! Operatörleri Ne Zaman Kullanılır

Dart ve Kotlin gibi modern dillerde null değerler programcılara kontrollü bir şekilde sunulur. Null pointer hataları en yaygın çökmelerden biridir; null safety bu sorunu derleme aşamasında yakalar. İki temel operatör vardır: ?. (safe call) ve ! (non-null assertion).

?. operatörü null olabilecek bir nesnenin metodunu veya özelliğini çağırırken kullanılır. Eğer nesne null ise, ifade null döner; hata fırlatmaz.

1// Dart örneği
2String? userName = null;
3int? length = userName?.length; // null döner, hata yok
4
5String? name = "Ahmet";
6int? len = name?.length; // 5 döner

Çapraz platform projede (Flutter) bu çok faydalıdır:

1// API yanıtı null olabilir
2User? user = fetchUserFromAPI();
3String? email = user?.email; // Güvenli, null kontrolü otomatik
4print(email); // null veya değer

! operatörü "bu değer kesinlikle null değildir" diye derleyiciye söylersin. Eğer yanılırsan, runtime hatası alırsın.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1// Dart örneği
2String? userName = "Ayşe";
3int length = userName!.length; // Kesinlikle null değil, int döner
4
5String? nullName = null;
6int bad = nullName!.length; // Runtime hatası!

1. Değer null olabilirse?. kullan
- API yanıtları, kullanıcı girdileri, isteğe bağlı parametreler

2. Değer kesinlikle null değilse! kullan
- Önceki kontroller ile garantilediğin durumlar
- Ama kullanmaktan kaçın; hata riski yüksek

1// Kontrol sonrası güvenli kullanım
2String? input = getUserInput();
3if (input!= null) {
4int len = input.length; //! gerek yok, type narrowing
5print("Uzunluk: $len");
6}
7
8// Yanlış: gereksiz!
9String? data = fetchData();
10print(data!.toUpperCase()); // Riskli
11
12// Doğru:?. veya kontrol
13print(data?.toUpperCase()); // Güvenli

?. = "null olabilir, güvenle işle"
! = "null değil, eminim" (dikkatli kullan)

Çoğu durumda ?. tercih et. ! sadece mutlak emin olduğun yerlerde kullan.

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