2011-07-19 9 views
35

Así que los colaboradores de código se quejan de código como este:¿Existe alguna razón válida para codificar un booleano falso como "Boolean.FALSE" en java?

boolean myFlag = false; 

que están diciendo que debe ser:

boolean myFlag = Boolean.FALSE; 

¿Es sólo un poco de fetiche con no usar palabras clave o hay una razón válida para hacerlo ¿esta?

+30

Indique a los revisores de códigos que lean el autoboxing. – Perception

+3

Yo diría que es un fetiche. Sin embargo, si los estándares de codificación utilizados especifican que debe usar Boolean.FALSE, debe usar eso, le guste o no, y si está en su sano juicio o no. – SWeko

+0

Sugeriría cambiar el título de la pregunta, ya que no está muy claro de qué está hablando ... –

Respuesta

57

No, eso es completamente inútil. No tendría sentido utilizar:

// Note capital B 
Boolean myFlag = Boolean.FALSE; 

para evitar la llamada a Boolean.valueOf (autoboxing), pero en su código no es sin el boxeo, y su sugerencia introduce una innecesaria unboxing operación.

Como siempre, si alguien sugiere algo y no entiende por qué, su primer puerto de escala debería ser preguntándoles.

+0

Además, si tienes boolean myFlag = false ;, simplemente deberías usar boolean myFlag; –

+9

@Danail: No si es una variable local. –

+7

+1 para "su primer puerto de escala debería preguntarles" – Chris

5

No tiene mucho sentido como una queja ya que Boolean.FALSE se desempaqueta a false de todos modos. Pero tal vez pregunte a la gente que le dice que cambie el código ¿por qué?

10

No hay nada de malo con el uso de la palabra clave falso. De hecho, en su código sería tonto usar Boolean.False ya que tiene que ocurrir un unboxing automático implícito para asignarlo a su campo/variable primitivo (Boolean.False es un booleano y no un booleano).

0

sólo puedo pensar en una razón, si realmente quiere excavar en busca de una posible razón:

En un IDE como Eclipse, puede hacer clic con el botón FALSE (en Boolean.FALSE) y seleccione Abra la jerarquía de llamadas o Referencias> (opción). No puedes hacer eso con el literal false. Pero no sé cuán útil es encontrar sus referencias de Boolean.FALSE en sus ciclos de desarrollo.

Curiosamente, cuando buscaba referencias de FALSE, se encontró llena todo el núcleo de Java (JDK/JRE) el código fuente! Si queremos usarlo o no, una cosa es segura, los chicos que codificaron y mantienen Java lo están usando mucho.

Según otras respuestas, es innecesario y puede usar el literal false, especialmente si el rendimiento es importante, evitando la sobrecarga de unboxing. Las revisiones de código deben priorizar el código optimizado legible/adecuadamente comentado sobre el código legible no optimizado.

Cuestiones relacionadas