Sobes.tech
Junior

Dlaczego błędy związane z null nazywa się 'błędami na milion'?

sobes.tech AI

Odpowiedź od AI

Błędy związane z null nazywane są "błędami za miliard dolarów" (a nie milion), ponieważ spowodowały ogromne straty finansowe i problemy w oprogramowaniu przez dziesięciolecia. Twórca koncepcji null (pierwotnie NIL) w języku ALGOL, Tony Hoare, później przyznał, że był to jego "błąd za miliard dolarów", ponieważ nie był w stanie przewidzieć przyszłych problemów z bezpieczeństwem.

Problemy wynikają z:

  • Nieokreśloności: null może oznaczać różne rzeczy w różnych kontekstach (brak wartości, błąd, nieobsłużony przypadek), co utrudnia zrozumienie kodu.
  • Problemy z bezpieczeństwem: Próba wykonania operacji na wartości null (np. wywołanie metody lub dostęp do właściwości) prowadzi do wyjątku (NullPointerException zwykle), co może powodować awarie aplikacji.
  • Potrzeby sprawdzania: Programiści muszą stale dodawać sprawdzenia null przed użyciem zmiennych, co zwiększa objętość i złożoność kodu.

W Flutterze i Dart, wraz z wprowadzeniem null safety, ten problem stał się znacznie mniej istotny, ponieważ domyślne typy nie mogą być null bez wyraźnego wskazania (String?, int? itd.), co pozwala kompilatorowi wykrywać potencjalne błędy przed wykonaniem.

// Przed wprowadzeniem null safety
String name = null; // To było możliwe

// Z null safety
// String name = null; // Błąd na etapie kompilacji
String? nullableName = null; // Dozwolone, ale wyraźnie wskazane