Sobes.tech
Junior

რატომ უწოდებენ null-თან დაკავშირებულ შეცდომებს 'მილიონობით შეცდომებს'?

sobes.tech AI

პასუხი AI-სგან

null-თან დაკავშირებული შეცდომები ეწოდება „მილიარდი დოლარის შეცდომებს“ (არა მილიონს), რადგან ისინი გამოიწვია უზარმაზარი ფინანსური დანაკარგები და პროგრამული უზრუნველყოფის პრობლემები ათწლეულების განმავლობაში. ALGOL ენის null (თავდაპირველად NIL) კონცეფციის შემქმნელი ტონი ჰოარი მოგვიანებით აღიარა, რომ ეს იყო მისი „მილიარდი დოლარის შეცდომა“, რადგან მან ვერ შეძლო მომავალ უსაფრთხოების პრობლემების წინასწარ განსაზღვრა.

პრობლემები წარმოიქმნება შემდეგი მიზეზებით:

  • უცნობობა: null შეიძლება სხვადასხვა კონტექსტში სხვადასხვა მნიშვნელობა ჰქონდეს (მნიშვნელობის არქონა, შეცდომა, გაუმკლავებელი შემთხვევა), რაც რთულს ხდის კოდის გაგებას.
  • უსაფრთხოების პრობლემები: null მნიშვნელობაზე ოპერაციის განხორციელება (მაგალითად, მეთოდის გამოძახება ან თვისების წვდომა) ჩვეულებრივ იწვევს გამონაკლისს (NullPointerException), რაც შეიძლება გამოიწვიოს პროგრამის გაკოტრება.
  • შეამოწმების საჭიროება: დეველოპერებს უწევთ მუდმივად დამატება null-ის შემოწმებები ცვლადების გამოყენებამდე, რაც ზრდის კოდის მოცულობას და სირთულეს.

Dart და Flutter-ში, null safety-ის შემოღების შემდეგ, ეს პრობლემა მნიშვნელოვნად შემცირდა, რადგან სტანდარტული ტიპები არ შეიძლება იყოს null გამოკვეთილი მითითების გარეშე (String?, int? და ა.შ.), რაც საშუალებას აძლევს კომპილატორს გამოავლინოს პოტენციური შეცდომები შესრულებამდე.

// Null safety-ის შემოღებამდე
String name = null; // ეს იყო შესაძლებელი

// Null safety-თან
// String name = null; // შეცდომა კომპილაციაზე
String? nullableName = null; // ნებადართული, მაგრამ გამოკვეთილი