Null ha uno scopo molto valido di rappresentare una mancanza di valore.
Dirò che sono la persona più vocale che conosco sugli abusi di null e tutti i mal di testa e le sofferenze che possono causare specialmente se usati liberamente.
La mia posizione personale è che le persone possono utilizzare null solo quando possono giustificare che è necessario e appropriato.
Esempio che giustifica i null:
La data della morte è in genere un campo nullable. Ci sono tre possibili situazioni con la data di morte. O la persona è morta e la data è nota, la persona è morta e la data è sconosciuta, o la persona non è morta e quindi non esiste una data di morte.
Date of Death è anche un campo DateTime e non ha un valore "sconosciuto" o "vuoto". Ha la data predefinita che viene visualizzata quando si crea un nuovo datetime che varia in base alla lingua utilizzata, ma tecnicamente c'è la possibilità che la persona in effetti muoia in quel momento e che venga contrassegnata come "valore vuoto" se si usa la data predefinita.
I dati dovrebbero rappresentare correttamente la situazione.
La persona è morta è nota la data della morte (3/9/1984)
Semplice, '3/9/1984'
La persona è morta, data di morte sconosciuta
Quindi cosa c'è di meglio? Null , '0/0/0000' o '01 / 01/1869 '(o qualunque sia il tuo valore predefinito?)
La persona non è morta la data della morte non è applicabile
Quindi cosa c'è di meglio? Null , '0/0/0000' o '01 / 01/1869 '(o qualunque sia il tuo valore predefinito?)
Quindi lascia pensare ogni valore oltre ...
-
Null , ha implicazioni e preoccupazioni di cui devi essere cauto, tentando accidentalmente di manipolarlo senza confermare che non è null, per esempio genererebbe un'eccezione, ma rappresenta anche meglio la situazione attuale ... Se la persona non è morta, la data di morte non esiste ... non è nulla ... è nulla ...
-
0/0/0000 , potrebbe essere accettabile in alcune lingue e potrebbe persino essere una rappresentazione appropriata di nessuna data. Sfortunatamente alcuni linguaggi e convalide rifiuteranno questo come un datetime non valido che lo rende un no go in molti casi.
-
1/1/1869 (o qualunque sia il valore di data / ora predefinito) , il problema qui è che diventa difficile da gestire. Potresti usarlo come mancanza di valore, eccetto cosa succede se voglio filtrare tutti i miei documenti per i quali non ho una data di morte? Potrei facilmente filtrare le persone che sono effettivamente decedute in quella data e che potrebbero causare problemi di integrità dei dati.
Il fatto è che a volte Do non deve rappresentare nulla e sicuramente a volte un tipo di variabile funziona bene, ma spesso i tipi di variabile devono essere in grado di rappresentare nulla.
Se non ho mele ho 0 mele, ma cosa succede se non so quante mele ho?
Assolutamente nulla è abusato e potenzialmente pericoloso, ma a volte è necessario. In molti casi è solo l'impostazione predefinita perché fino a quando non fornisco un valore, la mancanza di un valore e qualcosa deve rappresentarlo. (Null)