Sobes.tech
Junior

Dart'ta sıfır güvenliği (null safety) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Null güvenliği, Dart'ta null çözümlemesiyle ilgili hataları önlemeye yardımcı olan bir sistemdir. Derleyici kodu analiz eder ve bir değişkenin null değer tutup tutamayacağını belirler. Bir değişken null kabul etmiyorsa, derleyici ona hiçbir zaman null atanmayacağını garanti eder.

Null güvenliğinin temel yönleri:

  • Varsayılan null olmayan tür: Varsayılan olarak, türler null kabul etmez (non-nullable).
    // int null olamaz
    int count = 0;
    
  • Null kabul eden tür: Bir değişkenin null olabileceğini açıkça belirtmek için soru işareti ? kullanılır:
    // String? null olabilir
    String? name;
    
  • ! operatörü (null olmayan onay): Null kabul eden bir ifadenin null olmadığını onaylamak için kullanılır. Dikkatli kullanılmalıdır, çünkü null ise istisna fırlatır.
    String? nullableName = 'Flutter';
    // nullableName'in null olmadığını bilerek ! kullanıyoruz
    print(nullableName!.length);
    
  • ? operatörü (null duyarlı operatörler): Null kabul eden ifadelerde güvenli erişim veya metod çağrısı yapmak için kullanılır.
    • ?. (null duyarlı erişim):
      String? nullableString;
      // nullableString null değilse, length çağrılır; değilse sonuç null olur
      int? length = nullableString?.length;
      
    • ?? (null ise):
      String? serverName;
      // serverName null değilse, değeri kullanılır; değilse 'Guest'
      String displayName = serverName ?? 'Guest';
      
    • ??= (null ise atama):
      String? cache;
      // cache null ise, 'Loading...' atanır
      cache ??= 'Loading...';
      
  • Akış Analizi: Dart derleyicisi, kodu analiz eder ve null kabul eden değişkenin belirli bir bölümde null olmadığını garanti eder, böylece null olmayan olarak kullanılabilir.
    String? greeting = getGreeting();
    // Derleyici, bu kontrol sonrası greeting'in null olmadığını bilir
    if (greeting != null) {
      print(greeting.toUpperCase()); // Güvenli şekilde toUpperCase() kullanılabilir
    }
    

Null güvenliğinin avantajları:

  • Hata azaltma: NullReferenceException (veya benzerleri) çalışma zamanında önler.
  • Daha iyi okunabilirlik: Bir değişkenin null olabileceğini açıkça gösterir.
  • Performans artışı: Derleyici, hangi değişkenlerin garantili olarak null olmadığını bilerek optimizasyon yapabilir.

Null güvenliği Dart 2.12 sürümünde tanıtılmıştır.