соглашение об именах для логического переключателя Nullable - PullRequest
0 голосов
/ 20 января 2012

У меня есть сущность сообщения (Message), которая может быть настроена создателем как

  1. IsWebOnly где будет отображаться только на обычном сайте
  2. IsMobileOnly где будет отображаться только на мобильной версии сайта
  3. Сообщение также можно настроить для отображения в обеих формах (обычной и мобильной) веб-сайта.

Я хочу захватить это свойство как Nullable boolean. скажем X

 public class Message {

     public bool? X {get;set;}

     public bool IsMobileMessage { get {return X.HasValue ? !X.Value : true } }

     public bool IsWebMessage {get {return X.HasValue ? X.Value : true} }

   }
  • Какое имя будет наиболее читаемым для свойства?
  • Должно ли это три состояния быть зафиксировано с Enum вместо nullable boolean?
    • A Nullable boolean мне показалось более привлекательным, так как больше не будет никаких дополнений к состоянию объекта.

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Поскольку третье состояние состоит в том, что оба условия выполняются, у вас действительно есть два логических значения.Конечно, это означает, что есть четыре состояния, и одно из состояний недопустимо, но даже в этом случае я бы использовал перечисление Flags:

[Flags]
enum MessageType
{
    Web = 1,
    Mobile = 2,
    Both = Web | Mobile
}

Если вас беспокоит размер ваших объектов, вы можете объявить базовый тип как байтовый, и тогда он будет на самом деле меньше, чем bool ?, что составляет два байта.

3 голосов
/ 20 января 2012

Должно ли это три состояния быть захвачено с помощью Enum вместо nullable булева

Абсолютно, это было бы самодокументировано и намного легче поддерживать - иди с перечислением. Ваш текущий код в лучшем случае сбивает с толку, просто глядя на него, мне трудно понять логику - я не буду с нетерпением ждать, чтобы поддерживать этот код - условно, для получения истинного, ложного и отсутствия использовался бы логический тип bool со значением в качестве третьего состояния. Переосмысление отсутствия значения (null) для обозначения чего-то другого - это только неприятность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...