Menu
Coddy logo textTech

Defensive Programming

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 34 / 66.

Defansif programlama, null referanslardan kaynaklanan hataları önlemeye yardımcı olan bir tekniktir. Nesneleri kullanmaya çalışmadan önce null değerlerini kontrol etmeyi içerir.

Bir nesneyi kullanmadan önce null olup olmadığını kontrol edin:

string name = GetNameFromSomewhere();

// Defensive check
if (name == null)
{
    // Handle the null case
    name = "Default Name";
}

// Now it's safe to use name
Console.WriteLine(name.ToUpper());

Metodlarda parametreleri doğrulayın:

public void ProcessOrder(Order order)
{
    // Null parametre için savunma kontrolü
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // Artık siparişi işlemek güvenli
    Console.WriteLine("Processing order: " + order.Id);
}

Daha temiz null kontrolleri için koşullu erişim operatörü (?.) kullanın:

Customer customer = GetCustomerFromSomewhere();

// Instead of:
// string city = null;
// if (customer != null && customer.Address != null)
// {
//     city = customer.Address.City;
// }

// Use this:
string city = customer?.Address?.City;
challenge icon

Görev

Kolay

ProcessUserData adında bir metot oluşturun ki, bu metot userData adında bir string parametresi alsın. Metot şunları yapmalı:

  1. userData'nın null olup olmadığını kontrol edin - eğer öyleyse, "Error: User data is null" yazdırın ve geri dönün.
  2. userData'nın boş olup olmadığını kontrol edin - eğer öyleyse, "Error: User data is empty" yazdırın ve geri dönün.
  3. Eğer veri geçerliyse, onu büyük harfe dönüştürün ve "Processing: [UPPERCASE_DATA]" yazdırın.

Kopya kağıdı

Defansif programlama, nesneleri kullanmadan önce null değerleri kontrol ederek hataları önler.

Bir nesneyi kullanmadan önce null kontrolü yapın:

string name = GetNameFromSomewhere();

if (name == null)
{
    name = "Default Name";
}

Console.WriteLine(name.ToUpper());

Yöntemlerde parametreleri doğrulayın:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    Console.WriteLine("Processing order: " + order.Id);
}

Daha temiz null kontrolleri için koşullu erişim operatörünü (?.) kullanın:

Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;

Kendin dene

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // İpucu: "null" dizesi gerçek bir null değeri olarak işlenmelidir
        
        // Kodu buraya yazın
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler