Menu
Coddy logo textTech

Wczesne zwroty

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 18 z 66.

Wczesne zwroty to technika polegająca na opuszczeniu metody, gdy tylko uzyskamy odpowiedź lub napotkamy nieprawidłowy warunek, zamiast zagnieżdżać instrukcje warunkowe.

Porównajmy dwa podejścia do walidacji nazwy użytkownika:

Bez wczesnych zwrotów (zagnieżdżone instrukcje warunkowe):

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

Z wczesnymi zwrotami:

public bool ValidateUsername(string username)
{
    // Zwróć wynik od razu, jeśli username ma wartość null
    if (username == null)
        return false;
        
    // Zwróć wynik od razu, jeśli username jest zbyt krótka
    if (username.Length < 3)
        return false;
        
    // Zwróć wynik od razu, jeśli username jest zbyt długa
    if (username.Length > 20)
        return false;
        
    // Jeśli dotarliśmy tutaj, username jest poprawna
    return true;
}

Wczesne zwroty sprawiają, że kod jest bardziej czytelny i zmniejszają poziom wcięć.

challenge icon

Wyzwanie

Łatwy

Napisz metodę o nazwie ProcessPayment, która określa, czy płatność może zostać przetworzona, na podstawie następujących warunków:

  1. Kwota płatności musi być dodatnia
  2. Saldo konta musi być wystarczające
  3. Konto nie może być zablokowane

Użyj wczesnych instrukcji return, aby sprawdzić każdy warunek i zwrócić odpowiednie komunikaty o błędach.

Metoda powinna:

  • Przyjmować trzy parametry: decimal paymentAmount, decimal accountBalance i bool isAccountLocked
  • Zwracać ciąg znaków zawierający albo "Payment processed successfully", albo komunikat o błędzie
  • Używać wczesnych instrukcji return do walidacji

Wyświetlaj komunikaty o błędach dokładnie w następujących formatach:

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

Spróbuj swoich sił

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Wpisz tutaj swój kod
    }
    
    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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online