логическое, английское отрицание и просто избавление от логического - PullRequest
0 голосов
/ 11 августа 2010

Очень часто, когда вы кодируете, у вас есть флаг, указывающий две возможности, например:

CACHING_AUTHORIZED
CACHING_UNAUTHORIZED

или

CACHING_ON
CACHING_OFF

Если вы затем используете логическое значение для хранения этого, очень частоон просто «читает странно»:

CACHING_ON = false;
CACHING_OFF = true;

или

CACHING_ON = true;
CACHING_OFF = false;

Одна из возможностей - написать:

CACHING

А затем просто кодировать с помощью:

if ( CACHING )

или

if ( !CACHING )

, но иногда вам действительно нужны формы ON и OFF.

Дело в том, что оно не меняетсяМногое из того, что вы выбираете, просто не имеет особого смысла, независимо от того, как вы его поворачиваете.

Это не совсем не похоже на проблему «получателя» для логического значения, которое, безусловно, подвержено большому количествугорячие споры (следует ли нам использовать isConditionTrue или getIsCondition или isCondition или getCondition или просто условие или conditionTrue и т. д .: Я немного шутливый, но точка зрения остаётся, и по этому поводу и по теме cточно не близко).

Мой вопрос другой: видно, что ни

CACHING_ON = false;
CACHING_OFF = true;

, ни

CACHING_ON = true;
CACHING_OFF = false;

не имеет смысла, разве мы не должны просто избавитьсялогического и сделайте:

CACHING_ON = 1;
CACHING_OFF = 2;

Конечно, вы теряете логическое значение, но по крайней мере «1» и «2» не могут принести путаницу.

Моя точка зрения такова: использование логического и true / false очень часто сбивает с толку, потому что мы смешиваем две разные вещи: английский и логику, и они просто, ну, вообще не смешиваются.

Это плохо дляиспользовать int здесь, даже если есть только две возможности?

1 Ответ

1 голос
/ 11 августа 2010

Ваш метод не дает понять, что значение является логическим. Я чувствую, что должен иметь возможность присвоить значение 3.

Я не совсем понимаю вашу точку зрения. Если у вас 2 логических значения, вы представляете 4 возможных состояния, поэтому вам не следует называть переменные так, чтобы предполагалось, что есть только 2 варианта. Возможно, вам следует использовать перечисление и константы или флаги.

CACHING = ON
CACHING = OFF
CACHING = EITHER
CACHING = UNKNOWN
CACHING = UNKNOWABLE
CACHING = UNTHINKABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...