Menu
Coddy logo textTech

Guard Clauses

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

Guard clauses (защитные условия) — это условные операторы в начале метода, которые проверяют граничные случаи или некорректные входные данные и выполняют ранний возврат, если эти условия соблюдены.

Давайте создадим метод без защитного условия (guard clause):

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // Обработка заказа
        // Здесь много строк кода...
    }
}

Теперь давайте перепишем это с использованием защитного условия (guard clause):

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // Защитное условие — ранний выход, если заказ равен null
    }
    
    // Обработка заказа
    // Здесь много строк кода...
}

Защитные условия улучшают читаемость, уменьшая вложенность и обрабатывая исключительные случаи в начале метода.

challenge icon

Задание

Легко

Создайте метод с именем DivideNumbers, который принимает два целых числа: numerator и denominator.

  1. Добавьте защитное условие (guard clause) для проверки, равен ли знаменатель нулю.
  2. Если знаменатель равен нулю, выведите: "Cannot divide by zero" и верните 0.
  3. В противном случае разделите числитель на знаменатель и верните результат.

Шпаргалка

Защитные условия (guard clauses) — это условные операторы в начале метода, которые проверяют граничные случаи или недопустимые входные данные и обеспечивают ранний выход из метода, если эти условия выполняются.

Без защитного условия:

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // Process the order
        // Many lines of code here...
    }
}

С защитным условием:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // Guard clause - exit early if order is null
    }
    
    // Process the order
    // Many lines of code here...
}

Защитные условия улучшают читаемость кода, уменьшая уровень вложенности и обрабатывая исключительные случаи в самом начале метода.

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

using System;

public class Program
{
    public static int DivideNumbers(int numerator, int denominator)
    {
        // Напишите свой код здесь
    }
    
    public static void Main()
    {
        // Чтение входных данных из консоли
        int numerator = Convert.ToInt32(Console.ReadLine());
        int denominator = Convert.ToInt32(Console.ReadLine());
        
        // Вызов метода DivideNumbers
        int result = DivideNumbers(numerator, denominator);
        
        // Вывод результата
        Console.WriteLine(result);
    }
}
quiz iconПроверьте себя

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

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