Menu
Coddy logo textTech

Introduzione alla sicurezza dei valori null

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 23 di 110.

Una delle fonti più comuni di bug nella programmazione è tentare di usare un valore che non esiste. In Dart, questa speciale «assenza di valore» è rappresentata da null. La funzionalità di sicurezza rispetto a null di Dart ti aiuta a individuare questi errori prima ancora che il tuo codice venga eseguito.

Senza la sicurezza rispetto ai valori null, qualsiasi variabile potrebbe potenzialmente essere null, causando arresti anomali durante l'esecuzione quando provi a usarla:

// Nelle versioni precedenti di Dart (senza null safety)
String name;  // Potrebbe essere null!
print(name.length);  // Si verifica un errore se name è null

Con null safety attivata (Dart 2.12+), il compilatore distingue tra le variabili che possono contenere null e quelle che non possono. Per impostazione predefinita, le variabili sono non annullabili: devono sempre contenere un valore valido:

String name = 'Alice';  // Deve avere un valore
print(name.length);     // Sicuro: name non è mai null

Il compilatore si rifiuterà di compilare il codice in cui una variabile non nullable potrebbe essere null. Questo sposta il rilevamento degli errori dal runtime al momento della compilazione, rendendo i tuoi programmi più affidabili. Nelle prossime lezioni imparerai a dichiarare tipi nullable quando ne hai davvero bisogno e gli operatori che Dart mette a disposizione per lavorare in sicurezza con valori potenzialmente nulli.

challenge icon

Sfida

Facile

Costruiamo un semplice sistema di schede contatto che dimostri l'importanza delle variabili non nullable. Creerai un sistema in cui ogni contatto deve avere informazioni valide e garantite.

Organizzerai il codice in due file:

  • contact.dart: Definisci una classe Contact che rappresenti le informazioni di contatto di una persona. Poiché stiamo lavorando con la null safety, ogni campo deve avere un valore valido: non sono ammessi dati mancanti! La tua classe dovrebbe avere:
    • Un String firstName per il nome del contatto
    • Un String lastName per il cognome del contatto
    • Un String email per l'indirizzo email del contatto
    • Un int phoneDigits per il numero di cifre del numero di telefono
    • Un costruttore che accetta tutti e quattro i valori
    • Un getter fullName che restituisce il nome e il cognome uniti, con uno spazio tra loro
    • Un metodo displayCard() che stampa le informazioni del contatto
  • main.dart: Importa la tua classe di contatto e crea due contatti per dimostrare che tutti i campi hanno sicuramente un valore:
    • Crea un contatto con nome 'Emma', cognome 'Wilson', email 'emma@mail.com' e numero di cifre del telefono 10
    • Crea un contatto con nome 'James', cognome 'Brown', email 'james@work.com' e numero di cifre del telefono 11
    • Chiama displayCard() su ciascun contatto nell'ordine indicato sopra

Il metodo displayCard() dovrebbe stampare esattamente nel seguente formato:

--- Contact Card ---
Name: [fullName]
Email: [email]
Phone digits: [phoneDigits]

Nota come ogni variabile debba essere inizializzata con un valore reale: questa è la null safety in azione! Il compilatore garantisce che, quando accedi a fullName, email o a qualsiasi altro campo, questo conterrà sempre dati validi.

Risultato atteso:

--- Contact Card ---
Name: Emma Wilson
Email: emma@mail.com
Phone digits: 10
--- Contact Card ---
Name: James Brown
Email: james@work.com
Phone digits: 11

Provalo tu

import 'contact.dart';

void main() {
  // TODO: Crea il primo contatto con:
  // - nome: 'Emma'
  // - cognome: 'Wilson'
  // - email: 'emma@mail.com'
  // - cifre del numero di telefono: 10

  // TODO: Crea il secondo contatto con:
  // - nome: 'James'
  // - cognome: 'Brown'
  // - email: 'james@work.com'
  // - cifre del numero di telefono: 11

  // TODO: Chiama displayCard() su ogni contatto, nell'ordine
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online