Sobes.tech
Junior

Γιατί τα σφάλματα που σχετίζονται με το null ονομάζονται 'σφάλματα ενός εκατομμυρίου';

sobes.tech AI

Απάντηση από AI

Τα σφάλματα που σχετίζονται με το null ονομάζονται "σφάλματα δισεκατομμυρίων δολαρίων" (και όχι εκατομμυρίων), επειδή έχουν προκαλέσει τεράστιες οικονομικές απώλειες και προβλήματα στο λογισμικό για δεκαετίες. Ο δημιουργός της έννοιας του null (αρχικά NIL) στη γλώσσα ALGOL, Tony Hoare, αναγνώρισε αργότερα ότι ήταν το "σφάλμα δισεκατομμυρίων δολαρίων" του, καθώς δεν μπορούσε να προβλέψει τα μελλοντικά ζητήματα ασφαλείας.

Τα προβλήματα προκύπτουν λόγω:

  • Αβεβαιότητας: Το null μπορεί να σημαίνει διαφορετικά πράγματα σε διαφορετικά συμφραζόμενα (απουσία τιμής, σφάλμα, μη επεξεργασμένη περίπτωση), γεγονός που καθιστά δύσκολη την κατανόηση του κώδικα.
  • Προβλήματα ασφαλείας: Η προσπάθεια εκτέλεσης μιας λειτουργίας σε μια τιμή null (π.χ. κλήση μεθόδου ή πρόσβαση σε ιδιότητα) οδηγεί σε εξαίρεση (NullPointerException συνήθως), που μπορεί να προκαλέσει αποτυχίες στην εφαρμογή.
  • Ανάγκη ελέγχων: Οι προγραμματιστές πρέπει συνεχώς να προσθέτουν ελέγχους null πριν από τη χρήση μεταβλητών, κάτι που αυξάνει τον όγκο και την πολυπλοκότητα του κώδικα.

Με το Flutter και το Dart, και την εισαγωγή του null safety, αυτό το πρόβλημα έγινε πολύ λιγότερο σημαντικό, καθώς οι προεπιλεγμένοι τύποι δεν μπορούν να είναι null χωρίς ρητή ένδειξη (String?, int?, κ.λπ.), επιτρέποντας στον μεταγλωττιστή να ανιχνεύει πιθανά σφάλματα πριν από την εκτέλεση.

// Πριν από την εισαγωγή του null safety
String name = null; // Ήταν δυνατό

// Με null safety
// String name = null; // Σφάλμα κατά τη μεταγλώττιση
String? nullableName = null; // Επιτρέπεται, αλλά ρητά δηλωμένο