Null służy bardzo słusznemu celowi reprezentowania braku wartości.
Powiem, że jestem najbardziej głośną osobą, jaką znam na temat nadużywania wartości zerowej oraz wszystkich bólów głowy i cierpienia, jakie mogą powodować, zwłaszcza gdy są stosowane swobodnie.
Moje osobiste stanowisko jest takie, że ludzie mogą stosować wartości zerowe tylko wtedy, gdy mogą uzasadnić, że jest to konieczne i właściwe.
Przykład uzasadniający wartości null:
Data śmierci to zazwyczaj pole zerowalne. Istnieją trzy możliwe sytuacje z datą śmierci. Albo dana osoba zmarła, a data jest znana, dana osoba zmarła, a data jest nieznana, lub dana osoba nie jest martwa, a zatem data śmierci nie istnieje.
Data śmierci jest również polem DateTime i nie ma wartości „nieznana” ani „pusta”. Ma domyślną datę, która pojawia się, gdy tworzysz nową datę, która różni się w zależności od używanego języka, ale technicznie istnieje szansa, że dana osoba faktycznie umarła w tym czasie i oznaczałaby jako „pustą wartość”, gdybyś użyj domyślnej daty.
Dane musiałyby właściwie przedstawiać sytuację.
Osoba nie żyje Data śmierci jest znana (3/9/1984)
Prosty, „3/9/1984”
Osoba zmarła data śmierci nieznana
Co jest najlepsze? Null , „0/0/0000” lub „01/01/1869” (czy jakakolwiek wartość domyślna?)
Osoba nie jest martwa data śmierci nie dotyczy
Co jest najlepsze? Null , „0/0/0000” lub „01/01/1869” (czy jakakolwiek wartość domyślna?)
Pomyślmy więc o każdej wartości nad ...
- Null , ma implikacje i obawy, przed którymi musisz się uważać, przypadkowo próbując manipulować nim bez potwierdzenia, że najpierw nie jest zerowy, na przykład rzuci wyjątek, ale najlepiej reprezentuje faktyczną sytuację ... Jeśli dana osoba nie jest martwa data śmierci nie istnieje ... to nic ... jest zerowa ...
- 0/0/0000 , W niektórych językach może to być w porządku, a nawet może być odpowiednią reprezentacją braku daty. Niestety niektóre języki i sprawdzanie poprawności odrzuci to jako niepoprawną datę i godzinę, co sprawia, że w wielu przypadkach jest to niemożliwe.
- 1/1/1869 (lub jakakolwiek jest twoja domyślna wartość daty / godziny) , problemem jest to, że trudno jest sobie z tym poradzić. Możesz użyć tego jako swojej wartości, z wyjątkiem tego, co się stanie, jeśli chcę odfiltrować wszystkie moje rekordy, dla których nie mam daty śmierci? Mogę z łatwością odfiltrować osoby, które faktycznie zmarły w tym dniu, co może powodować problemy z integralnością danych.
Faktem jest czasem trzeba Czy trzeba reprezentować nic i pewien typ zmiennej czasami działa dobrze, ale często typy zmiennych muszą być zdolne do reprezentowania nic.
Jeśli nie mam jabłek, mam 0 jabłek, ale co, jeśli nie wiem, ile mam jabłek?
Z całą pewnością zero jest nadużywane i potencjalnie niebezpieczne, ale czasami jest konieczne. W wielu przypadkach jest to ustawienie domyślne, ponieważ dopóki nie podam wartości, brak wartości i coś musi ją reprezentować. (Zero)