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 Pythone in molte altre lingue come C/C++è possibile eseguire ifun'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 zdovrebbe essere True, ma z2dovrebbe esserlo False. Ora, un Clojurelinguaggio si avvicina a questo in un altro modo: la andfunzione non necessariamente valuta un bool, ma ifpuò gestirlo.
Indipendentemente dalla lingua, ogni volta che ti trovi a confrontare qualcosa con Trueo False, probabilmente vale la pena commentare.
if (some_flag == true)ma l'implicitoif (is_something)oif (has_something). Nota i nomi delle variabili.