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