Comprobar si boolean es verdadero

bool foo = true; // Do this? if (foo) { } // Or this? if (foo == true) { } 

Me gusta uno de ellos y mi compañero de trabajo el otro. El resultado es el mismo, pero ¿qué es (más) correcto?

Casi todos los que he visto express una opinión prefieren

 if (foo) { } 

De hecho, he visto a muchas personas criticar la comparación explícita, e incluso podría haberlo hecho antes. Yo diría que el estilo “corto” es idiomático.

EDITAR:

Tenga en cuenta que esto no significa que la línea de código siempre es incorrecta. Considerar:

 bool? maybeFoo = GetSomeNullableBooleanValue(); if (maybeFoo == true) { ... } 

Eso comstackrá, pero sin el “== verdadero” no lo hará, ya que no hay conversión implícita de bool? bool

Eso depende de tu situacion.

Yo diría que si tu bool tiene un buen nombre, entonces:

 if (control.IsEnabled) // Read "If control is enabled." { } 

sería preferido

Sin embargo, si la variable tiene un nombre no tan obvio, la comprobación contra la true sería útil para comprender la lógica.

 if (first == true) // Read "If first is true." { } 

Si vas a optar por

 if(foo == true) 

¿por qué no recorrer todo el camino y hacer

 if(foo == true == true == true == true == true == true == true == true == true) 

Que es lo mismo.

No estoy de acuerdo con que si está claramente nombrado (es decir: IsSomething ) está bien que no se compare con verdadero, pero de lo contrario debería hacerlo. Si está en una statement if, obviamente se puede comparar con verdadero.

 if(monday) 

Es tan descriptivo como

 if(monday == true) 

También prefiero el mismo estándar para no:

 if(!monday) 

Opuesto a

 if(monday == false) 

El primer ejemplo casi siempre gana en mi libro:

 if(foo) { } 

Es más corto y más conciso. ¿Por qué agregar un cheque adicional a algo cuando no es absolutamente necesario? Solo desperdiciando ciclos …

Sin embargo, sí estoy de acuerdo en que, a veces, la syntax más prolija hace que las cosas sean más legibles (lo que en última instancia es más importante siempre que el rendimiento sea aceptable) en situaciones donde las variables tienen un nombre pobre.

Ambos son correctos.

Es probable que tenga algún estándar de encoding en su empresa, simplemente siga las instrucciones. Si no tienes, deberías 🙂

Yo personalmente preferiría

 if(true == foo) { } 

no hay ninguna posibilidad para el == / = mistype y lo encuentro más expresivo en términos del tipo de foo. Pero es una pregunta muy subjetiva.

Ninguno es “más correcto”. Mi preferencia personal es por la forma más concisa, pero o bien está bien. Para mí, la vida es demasiado corta para siquiera pensar en discutir el descarte sobre cosas como esta.