Los jóvenes conocen las reglas, pero los viejos conocen las excepciones;)
En el último C#
caso, si está tratando con un null-able bool
, entonces debe:
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.
}
Si tristate no es un problema, generalmente no debería haber una razón para comparar algo con true
/ True
. Sin embargo, en Python
y en varios otros idiomas, como C/C++
puede realizar una if
expresión no bool. Estos lenguajes tienen reglas únicas para interpretar enteros, punteros, listas, etc. como verdaderos o falsos. En algún momento no quieres eso. Por ejemplo, en este fragmento de Python:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Aquí z
debería ser True
, pero z2
debería ser False
. Ahora, un Clojure
lenguaje se acerca a esto de otra manera: su and
función no necesariamente se evalúa como a bool
, pero la funciónif
puede manejar eso.
Independientemente del idioma, cada vez que te encuentres comparando algo True
o False
, probablemente valga la pena comentarlo.
if (some_flag == true)
pero lo implícitoif (is_something)
oif (has_something)
. Tenga en cuenta los nombres de las variables.