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"

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