Молоді знають правила, а старі знають винятки;)
Останнє 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). Зверніть увагу на назви змінних.