I giovani conoscono le regole, ma i vecchi conoscono le eccezioni;)
In ultimo C#
, se hai a che fare con un null-able bool
, allora devi:
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 il tristato non è un problema, di solito non dovrebbe esserci un motivo per confrontare qualcosa con true
/ True
. Tuttavia, in Python
e in molte altre lingue come C/C++
è possibile eseguire if
un'espressione su non-bool. Queste lingue hanno regole uniche per interpretare numeri interi, puntatori, elenchi, ecc. Come vero o falso. A volte non lo vuoi. Ad esempio, in questo frammento di Python:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Qui z
dovrebbe essere True
, ma z2
dovrebbe esserlo False
. Ora, un Clojure
linguaggio si avvicina a questo in un altro modo: la and
funzione non necessariamente valuta un bool
, ma if
può gestirlo.
Indipendentemente dalla lingua, ogni volta che ti trovi a confrontare qualcosa con True
o False
, probabilmente vale la pena commentare.
if (some_flag == true)
ma l'implicitoif (is_something)
oif (has_something)
. Nota i nomi delle variabili.