Junior
Kodėl su null susijusios klaidos vadinamos 'milijono klaidomis'?
sobes.tech AI
Atsakymas iš AI
Klaidos, susijusios su null, vadinamos "milijardo dolerių klaidomis" (o ne milijono), nes jos sukėlė didžiulius finansinius nuostolius ir problemas programinėje įrangoje dešimtmečius. ALGOL kalboje null (pradžioje NIL) koncepcijos kūrėjas Tony Hoare vėliau pripažino, kad tai buvo jo "milijardo dolerių klaida", nes jis tuo metu negalėjo numatyti būsimų saugumo problemų.
Problemos kyla dėl:
- Neapibrėžtumo:
nullgali reikšti skirtingus dalykus skirtinguose kontekstuose (trūksta reikšmės, klaida, neapdorotas atvejis), kas apsunkina kodo supratimą. - Saugumo problemų: Bandymas atlikti operaciją su
nullreikšme (pvz., iškviesti metodą ar pasiekti savybę) dažnai sukelia išimtį (NullPointerException), kas gali sukelti programos gedimą. - Patikrinimų poreikio: Kūrėjai nuolat turi pridėti
nullpatikrinimus prieš naudodami kintamuosius, kas didina kodo apimtį ir sudėtingumą.
Su Flutter ir Dart, įvedus null safety, ši problema tapo žymiai mažiau aktuali, nes numatyti tipai be aiškaus nurodymo (String?, int? ir t.t.) negali būti null, kas leidžia kompiliatoriui aptikti galimas klaidas prieš vykdymą.
// Iki null safety įvedimo
String name = null; // Buvo įmanoma
// Su null safety
// String name = null; // Klaida kompiliuojant
String? nullableName = null; // Leidžiama, bet aiškiai nurodyta