Ana içeriğe geç

Null Handling

C# dilinde null değerlerin yanlış yönetimi, runtime hatalarına ve beklenmeyen davranışlara yol açabilir.


1. Null Kontrollerini İhmal Etmek

Yanlış Kullanım: null kontrolleri yapmamak.

public void PrintMessage(string message)
{
    Console.WriteLine(message.Length); // NullReferenceException oluşabilir
}

İdeal Kullanım: null kontrolleri yaparak hataları önleyin.

public void PrintMessage(string message)
{
    if (message == null) throw new ArgumentNullException(nameof(message));
    Console.WriteLine(message.Length);
}

2. null için Magic Value Kullanımı

Yanlış Kullanım: null yerine anlamsız bir magic value kullanmak.

public string GetMessage() => "";

İdeal Kullanım: null için doğru bir model kullanarak daha okunabilir kod yazın.

public string GetMessage() => null;

3. Null Coalescing Operatörünü Kullanmayı Unutmak

Yanlış Kullanım: null kontrolünü manuel olarak yapmak.

var result = value != null ? value : "Default";

İdeal Kullanım: Null coalescing operatörü (??) kullanarak kodu sadeleştirin.

var result = value ?? "Default";

4. Null Conditional Operatörünü İhmal Etmek

Yanlış Kullanım: Null kontrolü yapmadan zincirleme erişim.

var length = person.Address.City.Length; // NullReferenceException riski

İdeal Kullanım: Null conditional operatörünü (?.) kullanarak hataları önleyin.

var length = person?.Address?.City?.Length;

5. Nullable<T> Kullanımını Göz Ardı Etmek

Yanlış Kullanım: Nullable değer türleri ile çalışırken manuel null kontrolü yapmak.

int? number = null;
if (number.HasValue) Console.WriteLine(number.Value);

İdeal Kullanım: Nullable<T> özelliklerini kullanarak kodu sadeleştirin.

int? number = null;
Console.WriteLine(number ?? 0); // Varsayılan değeri kullanır

6. null Döndüren Metotlar Kullanmak

Yanlış Kullanım: null döndüren metotlar kullanarak hataya açık bir yapı oluşturmak.

public string GetData()
{
    return null; // NullReferenceException riski
}

İdeal Kullanım: Null Object Pattern veya alternatif bir çözüm kullanın.

public string GetData()
{
    return string.Empty; // Null yerine boş bir değer döner
}

7. ArgumentNullException ile Detay Sağlamamak

Yanlış Kullanım: ArgumentNullException kullanırken detay sağlamamak.

throw new ArgumentNullException();

İdeal Kullanım: Parametre adı ve açıklama ekleyerek detay sağlayın.

throw new ArgumentNullException(nameof(parameter), "Parametre boş olamaz.");