Установка логического значения на основе целого числа - PullRequest
6 голосов
/ 07 января 2009

Я обнаружил, что это утверждение - какой-то старый код, и мне потребовалась секунда, чтобы выяснить ...

IsTestActive = (TestStateID == 1 ? true : false);

Пожалуйста, поправьте меня, если я ошибаюсь, но разве это не то же самое?

IsTestActive = (TestStateID == 1);

Если это так, зачем вам использовать первый? Какой из них более читабелен? (Я думаю, что последнее, но я хотел бы увидеть, что думают другие.)

Ответы [ 5 ]

32 голосов
/ 07 января 2009

Да, это точно так же.

Да, последний более читабелен.

5 голосов
/ 07 января 2009
IsTestActive = (TestStateID == 1);

определенно более читабельно.

Вы могли бы обосновать определение константы

ACTIVE = 1

затем замена логической переменной IsTestActive на

(TestStateID == ACTIVE)

При таком коде состояния логическое значение IsTestActive будет ошибочным, если состояние TestStateID изменится без обновления логического значения. Пропуск логического значения и проверка реального источника информации, которую вы запрашиваете, устранит возможность этой ошибки.

1 голос
/ 07 января 2009

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

0 голосов
/ 04 июня 2010

Ну, я не знаю о других языках, но в PHP это еще проще, используя приведение типов:

$IsTestActive = (boolean)$TestStateId;
0 голосов
/ 07 января 2009

Читаемость зависит от того, где вы используете эту конструкцию. Я часто нахожу что-то вроде

(TestStateID == 1 ? true : false)

более читабельно.

...