Menu
CoddyTech

Erken Dönüşler

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

Erken dönüşler, koşulları iç içe yerleştirmek yerine yanıtı bulduğumuzda veya geçersiz bir durumla karşılaştığımızda bir yöntemden hemen çıkmamızı sağlayan bir tekniktir.

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şullar):

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 hemen dön
    if (username == null)
        return false;
        
    // username çok kısaysa hemen dön
    if (username.Length < 3)
        return false;
        
    // username çok uzunsa hemen dön
    if (username.Length > 20)
        return false;
        
    // Buraya kadar geldiysek username geçerlidir
    return true;
}

Erken dönüşler kodu daha okunaklı hâle getirir ve girinti düzeylerini azaltır.

challenge icon

Görev

Kolay

Ödeme işleminin aşağıdakilere göre gerçekleştirilip gerçekleştirilemeyeceğini belirleyen ProcessPayment adlı bir yöntem yaz:

  1. Ödeme tutarı 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.

Yöntem şunları yapmalıdır:

  • Üç parametre almalıdır: decimal paymentAmount, decimal accountBalance ve bool isAccountLocked
  • "Payment processed successfully" veya bir hata mesajı içeren bir dize döndürmelidir
  • Doğrulama için erken dönüşler kullanmalıdır

Hata mesajlarını tam olarak şu biçimlerde yazdır:

  • "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)
    {
        // Kodunuzu buraya 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

Kendi başına pratik yap: Online C# derleyicisi