Menu
Coddy logo textTech

Early Returns

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

Erken dönüşler, cevabı aldığımız anda veya geçersiz bir koşul karşılaştığımızda bir metoddan çıkma tekniğidir; koşulları iç içe sarmak yerine.

Kullanıcı adını doğrulamak için iki yaklaşımı karşılaştıralım:

Erken dönüşler olmadan (iç içe koşullu ifadeler):

public bool ValidateUsername(string username)
{
    bool isValid = false;
    
    if (username != null)
    {
        if (username.Length >= 3)
        {
            if (username.Length <= 20)
            {
                isValid = true;
            }
        }
    }
    
    return isValid;
}

Erken dönüşlerle:

public bool ValidateUsername(string username)
{
    // username null ise erken dönüş
    if (username == null)
        return false;
        
    // username çok kısaysa erken dönüş
    if (username.Length < 3)
        return false;
        
    // username çok uzunsa erken dönüş
    if (username.Length > 20)
        return false;
        
    // Buraya ulaşırsak username geçerli
    return true;
}

Erken dönüşler kodu daha okunabilir hale getirir ve girinti seviyelerini azaltır.

challenge icon

Görev

Kolay

ProcessPayment adında bir metot yazın ki, bir ödemenin işlenip işlenemeyeceğini şu kriterlere göre belirlesin:

  1. Ödeme miktarı pozitif olmalıdır
  2. Hesap bakiyesi yeterli olmalıdır
  3. Hesap kilitli olmamalıdır

Her koşulu kontrol etmek ve uygun hata mesajlarını döndürmek için erken dönüşler kullanın.

Metot şunları yapmalıdır:

  • Üç parametre alsın: decimal paymentAmount, decimal accountBalance ve bool isAccountLocked
  • "Payment processed successfully" veya bir hata mesajı içeren bir string döndürsün
  • Doğrulama için erken dönüşler kullansın

Hata mesajlarını tam olarak şu formatlarda yazdırın:

  • "Error: Payment amount must be positive"
  • "Error: Insufficient funds"
  • "Error: Account is locked"

Kopya kağıdı

Erken dönüşler, bir koşul karşılandığında metodu hemen terk eder, iç içe geçmiş koşullardan kaçınır ve girinti seviyesini azaltır.

Erken dönüşler olmadan (iç içe geçmiş koşullu ifadeler):

public bool ValidateUsername(string username)
{
    bool isValid = false;
    
    if (username != null)
    {
        if (username.Length >= 3)
        {
            if (username.Length <= 20)
            {
                isValid = true;
            }
        }
    }
    
    return isValid;
}

Erken dönüşlerle:

public bool ValidateUsername(string username)
{
    // Kullanıcı adı null ise erken dönüş yap
    if (username == null)
        return false;
        
    // Kullanıcı adı çok kısaysa erken dönüş yap
    if (username.Length < 3)
        return false;
        
    // Kullanıcı adı çok uzunsa erken dönüş yap
    if (username.Length > 20)
        return false;
        
    // Buraya ulaştıysak, kullanıcı adı geçerli
    return true;
}

Erken dönüşler kodu daha okunabilir hale getirir ve girinti seviyelerini azaltır.

Kendin dene

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Buraya kodunuzu yazın
    }
    
    public static void Main(string[] args)
    {
        decimal paymentAmount = decimal.Parse(Console.ReadLine());
        decimal accountBalance = decimal.Parse(Console.ReadLine());
        bool isAccountLocked = bool.Parse(Console.ReadLine());
        
        string result = ProcessPayment(paymentAmount, accountBalance, isAccountLocked);
        Console.WriteLine(result);
    }
}
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