Menu
CoddyTech

Досрочный выход

Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 18 из 66.

Ранний возврат — это приём, при котором мы выходим из метода, как только получаем ответ или сталкиваемся с недопустимым условием, вместо того чтобы вкладывать условные конструкции друг в друга.

Давайте сравним два подхода к проверке имени пользователя:

Без раннего возврата (вложенные условные операторы):

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

С ранним возвратом:

public bool ValidateUsername(string username)
{
    // Выполнить досрочный возврат, если username равен null
    if (username == null)
        return false;
        
    // Выполнить досрочный возврат, если username слишком короткий
    if (username.Length < 3)
        return false;
        
    // Выполнить досрочный возврат, если username слишком длинный
    if (username.Length > 20)
        return false;
        
    // Если выполнение дошло до этого места, username допустим
    return true;
}

Ранний возврат делает код более читаемым и уменьшает уровень вложенности.

challenge icon

Задание

Легко

Напишите метод с именем ProcessPayment, который определяет, можно ли обработать платёж, на основе следующих условий:

  1. Сумма платежа должна быть положительной
  2. На счёте должно быть достаточно средств
  3. Счёт не должен быть заблокирован

Используйте ранний возврат, чтобы проверить каждое условие и вернуть соответствующие сообщения об ошибках.

Метод должен:

  • Принимать три параметра: decimal paymentAmount, decimal accountBalance и bool isAccountLocked
  • Возвращать строку: либо "Payment processed successfully", либо сообщение об ошибке
  • Использовать ранний возврат для проверки условий

Выводите сообщения об ошибках точно в следующих форматах:

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

Попробуйте сами

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Напишите здесь свой код
    }
    
    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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C#