Ana içeriğe geç

Null

Okunuşu
nal
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/null

Kısaca

Null, “burada değer yok” anlamına gelen özel bir değerdir; bir değişken bilerek hiçbir nesneye ya da veriye başvurmadığında kullanılır.

Programlamada null nedir?

Null, bir değişkenin bilerek hiçbir değer tutmadığını gösteren bir işarettir. Eksik bir ikinci ad, eşleşme bulamayan bir arama ya da boş bırakılmış bir veritabanı sütunu null ile temsil edilebilir. Diller bunu farklı yazar: Java, JavaScript, C# ve Kotlin'de null, Python'da None, Ruby, Go ve Swift'te nil, C ve C++'ta NULL ya da nullptr.

Null vardır, çünkü değişkenler sıklıkla nesnelere başvurur ve bazen başvurulacak bir nesne yoktur. Sorun, kodun bir değerin var olduğunu varsayıp onu kullanmaya çalışmasıyla başlar: null üzerinde bir metot çağırmak Java'nın NullPointerException hatası ya da JavaScript'in TypeError: Cannot read properties of null hatası gibi hatalara yol açar. Null referansları 1965'te icat eden Tony Hoare, neden oldukları hata ve çökme sayısı nedeniyle onlara daha sonra “milyar dolarlık hatam” dedi.

Modern diller, yokluğu tür sisteminde açık hâle getirerek riski azaltır. Kotlin, Swift, katı (strict) TypeScript ve null olabilen referans türlerine sahip C#'ta String? ya da string | null gibi bir tür kullanılmadan önce denetlenmelidir ve unutursanız derleyici şikâyet eder. Rust ve Haskell'de hiç null yoktur, bunun yerine Option veya Maybe türleri kullanılır. İsteğe bağlı zincirleme (user?.address) ve null birleştirme (name ?? "Guest") gibi operatörler bu denetimleri kısa tutar.

Null sıklıkla diğer “boş” değerlerle karıştırılır. Boş bir dize, 0 sayısı ve boş bir liste gerçek değerlerdir; null ise hiç değer olmadığı anlamına gelir. JavaScript bir komşu daha ekler: undefined genellikle bir değerin hiç atanmadığı anlamına gelirken null bilerek atanır. SQL'de NULL bilinmeyen anlamına gelir; bu yüzden NULL = NULL doğru değildir ve bunun yerine IS NULL ile sınamanız gerekir.

Önemli noktalar

  • Null, bir değerin bilerek yokluğunu temsil eder.
  • Null'ı gerçek bir nesneymiş gibi kullanmak en yaygın çalışma zamanı hatalarından bazılarına yol açar.
  • Kotlin, Swift, TypeScript ve C# null olabilen türleri derleme zamanında izleyebilir.
  • Rust ve Haskell, Option ve Maybe türleriyle null'dan tamamen kaçınır.
  • Null, "", 0 ya da boş liste gibi boş değerlerden farklıdır.

Örnek

TypeScript'te null olabilen bir değeri ele almaktypescript
interface User {
  name: string;
  nickname: string | null; // may be missing on purpose
}

function displayName(user: User): string {
  // user.nickname.toUpperCase() would not compile: it might be null
  return user.nickname ?? user.name;
}

displayName({ name: "Ada", nickname: null });     // "Ada"
displayName({ name: "Grace", nickname: "Amazing" }); // "Amazing"

Sık sorulan sorular

JavaScript'te null ile undefined arasındaki fark nedir?

undefined genellikle bir değişkene ya da özelliğe hiç değer verilmediği anlamına gelirken null, “değer yok” anlamında bilerek atanır. null == undefined doğrudur, ancak farklı türler oldukları için null === undefined yanlıştır.

Null pointer exception nedir?

Kodun bir null referansı sanki gerçek bir nesneyi gösteriyormuş gibi, örneğin üzerinde bir metot çağırarak kullanmaya çalışması durumunda ortaya çıkan hatadır. Java buna NullPointerException der; diğer dillerde farklı adlarla benzer hatalar vardır.

Null neden milyar dolarlık hata olarak adlandırılır?

1965'te null referansları ALGOL W diline ekleyen bilgisayar bilimcisi Tony Hoare, null'ın neden olduğu çökmelerin ve hataların muazzam maliyetini anlatmak için 2009'da bu ifadeyi kullandı. Bu yüzden birçok yeni dil, eksik değerlerin açıkça ele alınmasını zorunlu kılar.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar