Почему ошибки, связанные с null, называют 'ошибками на миллион'?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ошибки, связанные с null, называют "ошибками на миллиард долларов" (а не миллион), потому что они стали причиной огромных финансовых потерь и проблем в программном обеспечении на протяжении десятилетий. Создателем концепции null (первоначально NIL) в языке ALGOL Tony Hoare позже признал, что это было его "ошибкой на миллиард долларов", так как он не смог в тот момент предвидеть их будущие проблемы с безопасностью.
Проблемы возникают из-за:
- Неопределенности:
nullможет означать разные вещи в разном контексте (отсутствие значения, ошибка, необработанный случай), что затрудняет понимание кода. - Проблем с безопасностью: Попытка выполнить операцию над
nullзначением (например, вызвать метод или получить доступ к свойству) приводит к исключению (обычноNullPointerException), что может стать причиной сбоев приложения. - Необходимости проверок: Разработчикам приходится постоянно добавлять проверки на
nullперед использованием переменных, что увеличивает объем кода и его сложность.
Во Flutter и Dart, с введением null safety, эта проблема стала значительно менее актуальной, так как типы по умолчанию не могут быть null без явного указания (String?, int? и т.д.), что позволяет компилятору обнаруживать потенциальные ошибки до выполнения.
// До введения null safety
String name = null; // Это было возможно
// С null safety
// String name = null; // Ошибка на этапе компиляции
String? nullableName = null; // Разрешено, но явно указано