Os jovens conhecem as regras, mas os velhos conhecem as exceções;)
No mais recente C#, se você estiver lidando com um null-able bool, precisará:
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.
}
Se tristate não for um problema, geralmente não deve haver um motivo para comparar algo com true/ True. No entanto, em Pythonvários idiomas, como C/C++você pode executar uma ifexpressão não-booleana. Esses idiomas têm regras exclusivas para interpretar números inteiros, ponteiros, listas etc. como verdadeiros ou falsos. Às vezes você não quer isso. Por exemplo, neste trecho de código Python:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Aqui zdeveria estar True, mas z2deveria estar False. Agora, uma Clojurelinguagem aborda isso de outra maneira - a andfunção não necessariamente avalia como a bool, mas ifpode lidar com isso.
Independentemente do idioma, sempre que você se comparar a algo Trueou False, provavelmente vale a pena comentar.
if (some_flag == true)mas o implícitoif (is_something)ouif (has_something). Observe os nomes das variáveis.