Я разрабатываю веб-сайт С#/NHibernate, в котором есть частная система обмена сообщениями. Я бы хотел, чтобы администраторы проверяли, когда и когда сообщение было прочитано пользователем, и вместе выделите те сообщения, которые еще не были прочитаны пользователями. Для достижения обоих я нашел два варианта:
Вариант 1
class Message
{
DateTime? Read;
}
где Read==null
означает, что еще не прочитано
Вариант 2
class Message
{
DateTime Read;
}
где Read==default(DateTime)
(1 января 1 A.D., 0:00:00) означает, что еще не прочитано.
В университете меня научили использовать значение NULL
для обработки всех особых случаев, а также использование типа с нулевым значением кажется хорошим выбором, так как проще читать непрочитанные сообщения, проверяя, являются ли они NULL
или нет.
Но, используя типы с нулевым значением, по крайней мере, включает в себя бокс и распаковку в коде, при этом производительность снижается. С другой стороны, запрос на непрочитанные сообщения означает сравнение значения (но его можно индексировать)
Мой вопрос
Каков ваш предложенный подход для этого? Что предложили бы лучшие практики в этом случае?