Null ha uno scopo molto valido di rappresentare una mancanza di valore.
Dirò che sono la persona più vocale che conosco riguardo agli abusi di nullità e a tutti i mal di testa e le sofferenze che possono causare specialmente se usati liberamente.
La mia posizione personale è che le persone possono usare valori null solo quando possono giustificare che è necessario e appropriato.
Esempio che giustifica i null:
La data della morte è in genere un campo nullable. Esistono tre possibili situazioni con 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 appare quando si crea un nuovo datetime che varia in base alla lingua utilizzata, ma c'è tecnicamente la possibilità che una persona in realtà muoia in quel momento e si contrassegna come "valore vuoto" se si dovesse usa la data predefinita.
I dati dovrebbero rappresentare correttamente la situazione.
La persona è morta è nota la data di morte (09/03/1984)
Semplice, "3/9/1984"
La persona è morta la data di morte non è nota
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 di morte non è applicabile
Quindi cosa c'è di meglio? Null , '0/0/0000' o '01 / 01/1869 '(o qualunque sia il tuo valore predefinito?)
Quindi pensiamo che ogni valore su ...
- Null , ha implicazioni e preoccupazioni è necessario essere cauti, accidentalmente cercando di manipolare senza confermare che non è nulla prima per esempio sarebbe un'eccezione, ma è anche meglio rappresenta situazione reale ... Se la persona non è morto la data della morte non esiste ... non è niente ... è nulla ...
- 0/0/0000 , questo potrebbe andare bene in alcune lingue e potrebbe anche essere una rappresentazione appropriata senza data. Sfortunatamente alcune lingue e convalide lo rifiuteranno come un datetime non valido che lo rende un non andare in molti casi.
- 1/1/1869 (o qualunque sia il tuo valore datetime predefinito) , il problema qui è che diventa difficile da gestire. Potresti usarlo come mancanza di valore, tranne che cosa succede se voglio filtrare tutti i miei record per i quali non ho una data di morte? Potrei facilmente filtrare le persone che sono effettivamente morte in quella data e che potrebbero causare problemi di integrità dei dati.
Il fatto è a volte si Non ha bisogno di rappresentare niente e sicuro a volte un tipo di variabile funziona bene per questo, ma spesso i tipi di variabili devono essere in grado di rappresentare nulla.
Se non ho mele ho 0 mele, ma cosa succede se non so quante mele ho?
Certamente null è abusato e potenzialmente pericoloso, ma a volte è necessario. È solo il default in molti casi perché fino a quando non fornisco un valore la mancanza di un valore e qualcosa deve rappresentarlo. (Nullo)