56.86M
Категория: ПрограммированиеПрограммирование

Vazhnost-proverok-na-null-v-C-prilozheniyah

1.

Важность проверок на
null в C# приложениях
Обеспечьте безопасность и стабильность своих приложений, избегая
NullReferenceException и повышая качество кода.

2.

Почему null-значения опасны?
70% багов связаны с null
Большинство ошибок в C# приложениях возникают из-за
неправильной обработки null-значений
NullReferenceException
Одна из самых распространённых ошибок времени
выполнения в .NET экосистеме
Потери ресурсов
Время разработчиков тратится на устранение ошибок,
снижается надежность системы

3.

Современные средства защиты: nullable
reference types
C# 8 и выше
Читаемый код
Введены для явной аннотации
Компиляция с
предупреждениями
nullable и non-nullable типов,
Помогают выявлять потенциальные
понятный и самодокументируемый
позволяя компилятору отслеживать
null-уязвимости на этапе
код для всей команды
потенциальные проблемы
компиляции, до запуска приложения
Позволяют писать более безопасный,

4.

Пример: включение nullable-анализатора
Конфигурация проекта
В файле проекта добавляем специальную
директиву для включения анализа nullableтипов:
<Nullable>enable</Nullable>
После этого компилятор начинает
предупреждать о возможных null-опасностях в
коде
string? name;
Переменная может быть null — явное указание возможности
отсутствия значения
string name;
Переменная не может быть null — гарантия наличия
значения на этапе компиляции

5.

Проверки на null: лучшие
практики
01
Null-conditional оператор
Используйте ?. для безопасного обращения к членам объекта: obj?.Method()
02
Null-coalescing оператор
Применяйте ?? для установки значений по умолчанию: var name = input ?? "Default"
03
Явные проверки
Вводите условные проверки: if (obj != null) { ... } или используйте
ArgumentNullException.ThrowIfNull(obj)
04
Атрибуты аннотации
Для сложных сценариев применяйте атрибуты MemberNotNull, MemberNotNullWhen и другие

6.

Важность правильной инициализации
Конструкторы
Используйте конструкторы и
инициализаторы для гарантии
Инициализация полей
корректного состояния
Поля и свойства должны быть
инициализированы при создании
объекта
Проверки в методах
Включайте валидацию параметров,
чтобы избежать ошибок при вызове

7.

Избегайте ошибок при использовании struct
Readonly struct
Readonly методы
Помечайте структуры как readonly для
Используйте модификатор readonly для
предотвращения лишних копий и
методов, чтобы компилятор знал об
повышения производительности
отсутствии изменений
In-параметры
Передача через in-параметры уменьшает
копирование и повышает безопасность

8.

Предотвращение утечек
памяти и ошибок
подписки
1
Отписка от событий
Используйте паттерн IDisposable или слабые ссылки для
корректного освобождения ресурсов
2
WeakEventManager
Применяйте WeakEventManager в WPF приложениях для
автоматического управления подписками
3
Анализ памяти
Регулярно проверяйте использование памяти с помощью
инструментов Visual Studio и PerfView

9.

Итоги и рекомендации
Командная работа
Современные инструменты
Включайте nullable-анализ для всей команды
Используйте актуальные операторы C# и атрибуты
разработки. Единые стандарты — залог качества
аннотации для максимальной безопасности
кода
Код-ревью
Обучение
Проводите систематические проверки кода на
Регулярно обучайте команду лучшим практикам
наличие потенциальных null-уязвимостей
обработки null и современным подходам

10.

Заключение: создавайте
надежные и безопасные
приложения
Проверки на null — неотъемлемая часть профессионального арсенала
современного C#-разработчика. Инвестируйте в автоматизацию и обучение —
и ваши приложения станут устойчивее, надежнее и качественнее!
Начните сегодня
Постепенная миграция
Включите nullable reference types в
Планомерно обновляйте
новых проектах
существующий код
Долгосрочный эффект
Снижение багов и повышение качества кода
English     Русский Правила