Null sirve para 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 el sufrimiento que pueden causar, especialmente cuando se usan de manera liberal.
Mi postura personal es que la gente puede usar nulos solo cuando pueden justificar que es necesario y apropiado.
Ejemplo que justifica nulos:
La fecha de la muerte suele ser un campo que puede contener nulos. Hay tres situaciones posibles con fecha de fallecimiento. O la persona murió y se conoce la fecha, la persona falleció y la fecha se desconoce, o la persona no está muerta y, por lo tanto, no existe una fecha de muerte.
La fecha de la muerte 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 muriera en ese momento y se marque como su "valor vacío" si tuviera que usa la fecha por defecto.
Los datos deberían representar la situación correctamente.
La persona es muerta. Se conoce la fecha de la muerte (3/9/1984)
Simple, '3/9/1984'
La persona es muerta. Se desconoce la fecha de la muerte
Entonces, ¿qué es lo mejor? Nulo , '0/0/0000' o '01 / 01/1869 '(o cualquiera que sea su valor predeterminado?)
La persona no está muerta. La fecha de muerte no es aplicable
Entonces, ¿qué es lo mejor? Nulo , '0/0/0000' o '01 / 01/1869 '(o cualquiera que sea su valor predeterminado?)
Así que pensemos en cada valor sobre ...
-
Nulo , tiene implicaciones y preocupaciones de las que debe tener cuidado, por casualidad, tratar 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 adecuada de ninguna fecha. Desafortunadamente, algunos idiomas y la validación rechazarán esto como una fecha no válida, lo que hace que sea un no go en muchos casos.
-
1/1/1869 (o cualquiera que sea su valor de fecha y hora predeterminado) , el problema aquí es que es difícil de manejar. Podría usar eso como su falta de valor, excepto lo que 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 murieron en esa fecha, lo que podría causar problemas de integridad de los datos.
El hecho es a veces que Do no representa nada y que a veces un tipo de variable funciona bien para eso, pero a menudo los tipos de variables no pueden representar nada.
Si no tengo manzanas, tengo 0 manzanas, pero ¿qué pasa si no sé cuántas manzanas tengo?
Por todos los medios, el nulo es abusado y potencialmente peligroso, pero a veces es necesario. Es solo el valor predeterminado en muchos casos porque hasta que proporciono un valor, la falta de un valor y algo debe representarlo. (Nulo)