Menu
Coddy logo textTech

Defensive Programming

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

Защитное программирование — это техника, которая помогает предотвратить ошибки, вызванные ссылками на null. Оно включает проверку значений null перед попыткой использования объектов.

Проверяйте на null перед использованием объекта:

string name = GetNameFromSomewhere();

// Defensive check
if (name == null)
{
    // Handle the null case
    name = "Default Name";
}

// Now it's safe to use name
Console.WriteLine(name.ToUpper());

Проверка параметров в методах:

public void ProcessOrder(Order order)
{
    // Защитная проверка параметра на null
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // Теперь безопасно обрабатывать заказ
    Console.WriteLine("Processing order: " + order.Id);
}

Используйте оператор условного доступа (?.) для более чистых проверок на null:

Customer customer = GetCustomerFromSomewhere();

// Вместо этого:
// string city = null;
// if (customer != null && customer.Address != null)
// {
//     city = customer.Address.City;
// }

// Используйте это:
string city = customer?.Address?.City;
challenge icon

Задание

Легко

Создайте метод с именем ProcessUserData, который принимает строковый параметр userData. Метод должен:

  1. Проверить, является ли userData null — если да, вывести "Error: User data is null" и return.
  2. Проверить, пустой ли userData — если да, вывести "Error: User data is empty" и return.
  3. Если данные действительны, преобразовать их в верхний регистр и вывести "Processing: [UPPERCASE_DATA]".

Шпаргалка

Защитное программирование предотвращает ошибки путем проверки значений null перед использованием объектов.

Проверяйте на null перед использованием объекта:

string name = GetNameFromSomewhere();

if (name == null)
{
    name = "Default Name";
}

Console.WriteLine(name.ToUpper());

Валидируйте параметры в методах:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    Console.WriteLine("Processing order: " + order.Id);
}

Используйте условный оператор доступа (?.) для более чистых проверок на null:

Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;

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

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // Подсказка: строку "null" следует рассматривать как фактическое значение null
        
        // Напишите свой код здесь
    }
}
quiz iconПроверьте себя

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

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