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:
nullmoż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 (NullPointerExceptionzwykle), co może powodować awarie aplikacji. - Potrzeby sprawdzania: Programiści muszą stale dodawać sprawdzenia
nullprzed 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