Молодые знают правила, а старые знают исключения;)
В последнем C#случае, если вы имеете дело с null-able bool, то вам необходимо:
bool? x = null;
bool? y = true;
bool? z = false;
if (x == true || y == true || z == true) {
// That was the only way that is reasonably readable that I know of
// to accomplish this expression.
}
Если tristate не является проблемой, то обычно не должно быть причины сравнивать что-либо с true/ True. Тем не менее, в Pythonнекоторых других языках, таких как C/C++вы, вы можете выполнять выражения, ifотличные от bool. Эти языки имеют уникальные правила для интерпретации целых чисел, указателей, списков и т. Д. Как истинных или ложных. Иногда ты этого не хочешь. Например, в этом фрагменте Python:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Здесь zдолжно быть True, но z2должно быть False. Теперь Clojureязык подходит к этому еще одним способом - там andфункция не обязательно оценивает a bool, но ifможет справиться с этим.
Независимо от языка, каждый раз, когда вы сравниваете что-то с Trueили False, это, вероятно, стоит комментировать.
if (some_flag == true)но неявноеif (is_something)илиif (has_something). Обратите внимание на имена переменных.