Nulo tiene un propósito muy válido de representar una falta de valor.
Diré que soy la persona más vocal que conozco sobre los abusos de null y todos los dolores de cabeza y sufrimiento que pueden causar, especialmente cuando se usan libremente.
Mi postura personal es que las personas pueden usar valores nulos solo cuando pueden justificar que es necesario y apropiado.
Ejemplo justificando nulos:
La fecha de fallecimiento suele ser un campo anulable. Hay tres situaciones posibles con fecha de fallecimiento. O la persona ha muerto y se conoce la fecha, la persona ha muerto y la fecha se desconoce, o la persona no está muerta y, por lo tanto, no existe una fecha de muerte.
La fecha de fallecimiento también es un campo de fecha y hora y no tiene un valor "desconocido" o "vacío". Tiene la fecha predeterminada que aparece cuando crea una nueva fecha y hora que varía según el idioma utilizado, pero técnicamente existe la posibilidad de que esa persona realmente muriera en ese momento y se marcaría como su "valor vacío" si fuera usa la fecha predeterminada.
Los datos tendrían que representar la situación correctamente.
La persona está muerta se conoce la fecha de la muerte (3/9/1984)
Simple, '3/9/1984'
La persona está muerta, se desconoce la fecha de la muerte
Entonces, ¿qué es lo mejor? Nulo , '0/0/0000' o '01 / 01/1869 '(¿o cuál es su valor predeterminado?)
La persona no está muerta, la fecha de fallecimiento no es aplicable
Entonces, ¿qué es lo mejor? Nulo , '0/0/0000' o '01 / 01/1869 '(¿o cuál es su valor predeterminado?)
Así que pensemos cada valor sobre ...
- Nulo , tiene implicaciones y preocupaciones de las que debes tener cuidado, tratar accidentalmente de manipularlo sin confirmar que no es nulo primero, por ejemplo, arrojaría una excepción, pero también representa mejor la situación real ... Si la persona no está muerta la fecha de la muerte no existe ... no es nada ... es nula ...
- 0/0/0000 , esto podría estar bien en algunos idiomas, e incluso podría ser una representación apropiada de ninguna fecha. Desafortunadamente, algunos idiomas y validaciones rechazarán esto como una fecha y hora no válida, lo que lo hace imposible en muchos casos.
- 1/1/1869 (o cualquiera que sea su valor predeterminado de fecha y hora) , el problema aquí es que es difícil de manejar. Podría usarlo como su valor de falta de valor, excepto ¿qué sucede si quiero filtrar todos mis registros para los que no tengo una fecha de fallecimiento? Podría filtrar fácilmente a las personas que realmente murieron en esa fecha, lo que podría causar problemas de integridad de datos.
El hecho es que a veces te No tiene que representar nada y seguro a veces un tipo de variable que funciona bien para eso, sino que a menudo tipos variables tienen que ser capaces de representar nada.
Si no tengo manzanas, tengo 0 manzanas, pero ¿qué pasa si no sé cuántas manzanas tengo?
Por supuesto, se abusa de nulo y es potencialmente peligroso, pero a veces es necesario. Es solo el valor predeterminado en muchos casos porque hasta que proporcione un valor, la falta de un valor y algo debe representarlo. (Nulo)