Нуль служит очень ценной цели представления недостатка стоимости.
Я скажу, что я - самый громкий человек, которого я знаю о злоупотреблениях null и обо всех головных болях и страданиях, которые они могут причинить, особенно когда используются свободно.
Моя личная позиция заключается в том, что люди могут использовать нули только тогда, когда они могут обосновать это необходимостью и уместностью.
Пример, оправдывающий нули:
Дата смерти, как правило, пустое поле. Есть три возможных ситуации с датой смерти. Либо человек умер, и дата известна, человек умер, и дата неизвестна, либо человек не умер, и поэтому дата смерти не существует.
Дата смерти также является полем DateTime и не имеет «неизвестного» или «пустого» значения. У него есть дата по умолчанию, которая появляется, когда вы создаете новую дату и время, которая меняется в зависимости от используемого языка, но технически существует вероятность того, что человек действительно умер в то время и будет помечен как «пустое значение», если вы используйте дату по умолчанию.
Данные должны правильно представлять ситуацию.
Человек мертв Дата смерти известна (09.03.1984)
Простой, 3/9/1984
Человек мертв Дата смерти неизвестна
Так что лучше? Null , '0/0/0000' или '01 / 01/1869 '(или каково ваше значение по умолчанию?)
Человек не умер, дата смерти не применяется
Так что лучше? Null , '0/0/0000' или '01 / 01/1869 '(или каково ваше значение по умолчанию?)
Итак, давайте подумаем над каждым значением ...
- Нуль , у него есть последствия и проблемы, о которых вам следует опасаться, если случайно попытаться манипулировать им, не подтверждая, что он не является нулевым, например, сначала возникнет исключение, но это также лучше всего отражает реальную ситуацию ... Если человек не мертв дата смерти не существует ... это ничего ... это ноль ...
- 0/0/0000 , это может быть хорошо на некоторых языках и даже может быть подходящим представлением без даты. К сожалению, некоторые языки и проверки будут отклонять это как недопустимое время и дата, что делает его бесполезным во многих случаях.
- 1/1/1869 (или как бы вы не указывали значение даты и времени по умолчанию) , проблема в том, что с ним становится сложно справиться. Вы можете использовать это как отсутствие ценности, за исключением того, что произойдет, если я захочу отфильтровать все мои записи, для которых у меня нет даты смерти? Я мог легко отфильтровать людей, которые действительно умерли в тот день, что могло вызвать проблемы с целостностью данных.
Тот факт , иногда вы ли нужно не представлять ничего и уверен , что иногда переменная типа хорошо работает, но часто типы переменных должны быть в состоянии представить ничего.
Если у меня нет яблок, у меня 0 яблок, но что, если я не знаю, сколько у меня яблок?
Безусловно, null злоупотребляет и потенциально опасен, но иногда это необходимо. Во многих случаях это только значение по умолчанию, потому что пока я не предоставлю значение, ему не хватает значения, и что-то должно его представлять. (Значение NULL)