Sobes.tech
Junior

Защо грешките, свързани с null, се наричат 'грешки за милион'?

sobes.tech AI

Отговор от AI

Грешките, свързани с null, се наричат "грешки за милиард долара" (а не милион), защото са причинили огромни финансови загуби и проблеми в софтуера през десетилетията. Създаделят концепцията за null (първоначално NIL) в езика ALGOL, Тони Хоар по-късно призна, че това е неговата "грешка за милиард долара", тъй като тогава не е могъл да предвиди бъдещите проблеми със сигурността.

Проблемите възникват поради:

  • Несигурност: null може да означава различни неща в различни контексти (липса на стойност, грешка, непроцесиран случай), което усложнява разбирането на кода.
  • Проблеми със сигурността: Опитът да се извърши операция върху стойност null (например, извикване на метод или достъп до свойство) води до изключение (NullPointerException обикновено), което може да причини сривове на приложението.
  • Необходимост от проверки: Разработчиците трябва постоянно да добавят проверки за null преди използването на променливи, което увеличава обема и сложността на кода.

С Flutter и Dart, с въвеждането на null safety, този проблем стана значително по-малко актуален, тъй като типовете по подразбиране не могат да бъдат null без явна индикация (String?, int? и т.н.), което позволява на компилатора да открива потенциални грешки преди изпълнението.

// Преди въвеждането на null safety
String name = null; // Това беше възможно

// С null safety
// String name = null; // Грешка при компилация
String? nullableName = null; // Разрешено, но явно указано