Người trẻ biết các quy tắc, nhưng người già biết các ngoại lệ;)
Mới nhất C#
, nếu bạn đang giao dịch với a null-able bool
, thì bạn phải:
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.
}
Nếu tristate không phải là vấn đề, thì thường không nên có lý do để so sánh một cái gì đó với true
/ True
. Tuy nhiên, trong Python
và một số ngôn ngữ khác như C/C++
bạn có thể thực hiện một if
biểu thức không phải là bool. Các ngôn ngữ này có các quy tắc duy nhất để diễn giải các số nguyên, con trỏ, danh sách, v.v ... là đúng hoặc sai. Đôi khi bạn không muốn điều đó. Ví dụ: trong đoạn mã Python này:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Ở đây z
nên True
, nhưng z2
nên được False
. Bây giờ, một Clojure
ngôn ngữ tiếp cận điều này theo một cách khác - có and
chức năng không nhất thiết phải đánh giá theo một bool
, nhưng if
có thể xử lý điều đó.
Bất kể ngôn ngữ, bất cứ khi nào bạn thấy mình so sánh một cái gì đó với True
hoặc False
, nó có thể là giá trị nhận xét.
if (some_flag == true)
nhưng ẩnif (is_something)
hoặcif (has_something)
. Lưu ý tên biến.