Sobes.tech
Junior

Miks nimetatakse nulliga seotud vigu 'miljonivigadeks'?

sobes.tech AI

Vastus AI-lt

Vead ar null saistītās kļūdas tiek dēvētas par "miljarda dolāru kļūdām" (nevis miljonu), jo tās ir izraisījušas milzīgus finanšu zaudējumus un problēmas programmatūrā vairākus gadu desmitus. ALGOL valodā null (sākotnēji NIL) koncepcijas radītājs Tony Hoare vēlāk atzina, ka tas bija viņa "miljarda dolāru kļūda", jo viņš tajā laikā nevarēja paredzēt nākotnes drošības problēmas.

Problēmas rodas no:

  • Neprecizitātes: null dažādos kontekstos var nozīmēt dažādas lietas (trūkst vērtības, kļūda, neapstrādāts gadījums), kas apgrūtina koda saprašanu.
  • Drošības problēmas: Mēģinājums veikt operāciju ar null vērtību (piemēram, izsaukt metodi vai piekļūt īpašībai) parasti noved pie izņēmuma (NullPointerException), kas var izraisīt lietojumprogrammas avāriju.
  • Patstāvīgas pārbaudes nepieciešamība: Izstrādātāji pastāvīgi pievieno null pārbaudes pirms mainīgo izmantošanas, kas palielina koda apjomu un sarežģītību.

Ar Flutter un Dart, ieviešot null safety, šī problēma kļuva daudz mazāk aktuāla, jo noklusējuma tipi nevar būt null bez skaidras norādes (String?, int? utt.), kas ļauj kompilatoram identificēt potenciālās kļūdas pirms izpildes.

// Pirms null safety ieviešanas
String name = null; // Bija iespējams

// Ar null safety
// String name = null; // Kļūda kompilācijā
String? nullableName = null; // Atļauts, bet skaidri norādīts