Я обнаружил, что это выражение представляет собой старый код, и мне потребовалась секунда, чтобы понять ...
IsTestActive = (TestStateID == 1 ? true : false);
Пожалуйста, поправьте меня, если я ошибаюсь, но разве это не то же самое ?:
IsTestActive = (TestStateID == 1);
Если это так, зачем вам вообще использовать первый? Какой из них более читабельный? (Я думаю, что последнее, но я хотел бы узнать, что думают другие.)





Да, точно так же.
Да, последнее более читабельно.
У первого теоретически будет минутная производительность, хотя, если вы заботитесь об этом уровне производительности, я подозреваю, что у вас есть более серьезные проблемы ...
Нет, практических причин использовать первую версию нет, мир не идеален, и программисты тоже.
IsTestActive = (TestStateID == 1);
определенно более читабельный.
Вы мог обосновываете необходимость определения константы
ACTIVE = 1
затем заменив логическую переменную IsTestActive на
(TestStateID == ACTIVE)
В нынешнем коде состояние логического IsTestActive будет ошибочным, если состояние TestStateID изменится без обновления логического значения. Обход логического значения и тестирование реального источника информации, которую вы ищете, устранит возможность этой ошибки.
хороший момент, я ненавижу магические целые числа, но я предполагаю, что OP просто отправлял пример кода
Это может быть так, но я действительно вижу много людей, использующих такие временные переменные в производственном коде.
Читаемость зависит от того, где вы используете эту конструкцию. Я часто нахожу что-то вроде
(TestStateID == 1 ? true : false)
более читабельный.
Ну, я не знаю других языков, но в PHP это еще проще, используя приведение типов:
$IsTestActive = (boolean)$TestStateId;
Я видел только первый, используемый двумя типами людей: теми, кому не хватает фундаментального понимания булевой логики, или теми, кто считает тернарный оператор действительно крутым.