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ği2String? userName = null;3int? length = userName?.length; // null döner, hata yok45String? name = "Ahmet";6int? len = name?.length; // 5 dönerÇapraz platform projede (Flutter) bu çok faydalıdır:
1// API yanıtı null olabilir2User? user = fetchUserFromAPI();3String? email = user?.email; // Güvenli, null kontrolü otomatik4print(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.
1// Dart örneği2String? userName = "Ayşe";3int length = userName!.length; // Kesinlikle null değil, int döner45String? 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ım2String? input = getUserInput();3if (input!= null) {4int len = input.length; //! gerek yok, type narrowing5print("Uzunluk: $len");6}78// Yanlış: gereksiz!9String? data = fetchData();10print(data!.toUpperCase()); // Riskli1112// Doğru:?. veya kontrol13print(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.
0 yorum