cuál es mejor en Java
código style
?boolean checking if()
boolean status = true;
if(!status) {
//do sth
} else {
//do sth
}
o
if(status == false) {
//do sth
} else {
//do sth
}
cuál es mejor en Java
código style
?boolean checking if()
boolean status = true;
if(!status) {
//do sth
} else {
//do sth
}
o
if(status == false) {
//do sth
} else {
//do sth
}
Previamente, por supuesto. Último es redundante, y solo demuestra que no has entendido muy bien el concepto de booleanos.
Una sugerencia más: Elija un nombre diferente para su variable boolean
. Como por this Java style guide:
es prefijo debe utilizarse para las variables y métodos booleanos.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Esta es la convención de nomenclatura para
boolean
métodos y variables utilizadas por Sun para los paquetes principales de Java.Al utilizar el prefijo
is
resuelve un problema común de elegir nombres malos booleanos comostatus
oflag
.isStatus
oisFlag
simplemente no encaja, y el programador se ve obligado a elegir más nombres significativos .métodos setter para
boolean
las variables deben haber establecido prefijo como en:
void setFound(boolean isFound);
Hay algunas alternativas al
is
prefijo que encaja mejor en algunas situaciones . Estos sonhas
,can
yshould
prefijos:boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
Pruebe 'good_status' o' fair_weather_status' o 'status_known' o' status_unknown' o incluso 'status_malus__vana_salus__semper_dissolubilis'. :) – tchrist
El anterior. Este último simplemente agrega verbosidad.
Esto es más legible y buena práctica también.
if(!status){
//do sth
}else{
//do sth
}
excepto que cambiaría las cláusulas que acaba de probar si (estado) –
Además, podría reformular el nombre de la variable con un prefijo "is-" para indicar cuál es el valor predeterminado es. –
La primera de ellas, o if (status) { /*second clause*/ } else { /* first clause */ }
EDITAR
Si realmente se desea que la segunda forma, entonces if (false == status) <etc>
, mientras más feo, es probablemente más seguros (errores tipográficos WRT).
+1 para (falso == estado), que también proporciona una guía para la pregunta 'if (0 == i)' no solicitada – subsub
Yo sugeriría que lo haga:
if (status) {
//positive work
} else {
// negative work
}
Los ==
pruebas, mientras que, obviamente redundante, también corren el riesgo de una sola =
errata que daría lugar a una asignación.
El primero. Pero sólo otro punto, el siguiente también haría que el código sea más legible:
if (!status) {
// do false logic
} else {
// do true logic
}
Nota que hay espacios adicionales entre if
y la (
, y también antes de la declaración else
.
EDITAR
Como señaló @Mudassir, si hay NO otro código compartido en el método que utiliza la lógica, entonces el mejor estilo sería:
if (!status) {
// do false logic
}
// do true logic
@Downvoter - ¿Te gustaría comentar? –
Sí, rechacé su respuesta. Pero no es personal. – Mudassir
@Mudassir * suspiro * ... –
Si nos fijamos En las alternativas de esta página, por supuesto, la primera opción se ve mejor y la segunda es más detallada. Pero si está mirando una clase grande que alguien más escribió, esa verbosidad puede marcar la diferencia entre darse cuenta de inmediato de lo que el condicional está probando o no.
Una de las razones por las que me alejé de Perl es porque depende mucho de la puntuación, que es mucho más lenta de interpretar mientras se lee.
Sé que estoy en la lista de votantes aquí, pero casi siempre me pondré de lado con un código más explícito para que otros puedan leerlo con mayor precisión. Por otra parte, nunca usaría una variable booleana llamada "estado" tampoco. Tal vez es un éxito o simplemente un éxito, pero el "estado" es verdadero o falso, no significa nada para el lector casual de manera intuitiva. Como puede ver, estoy muy interesado en la legibilidad del código porque leo tanto código que otros han escrito.
El primer estilo es mejor. Aunque debería usar mejor nombre de variable
Realmente también depende de cómo nombre su variable.
Cuando las personas preguntan "cuál es la mejor práctica", esto implica implícitamente que ambas son correctas, por lo que es solo una cuestión de lo que es más fácil de leer y mantener.
Si el nombre de su "status" variable (que es el caso en el código de ejemplo), me gusta mucho preferiría ver
if(status == false) // if status is false
Por otro lado, si se había nombrado a su isXXX variables (por ejemplo, isReadableCode), entonces el primero es más legible. considerar:
if(!isReadable) { // if not readable
System.out.println("I'm having a headache reading your code");
}
Mi sensación personal cuando se trata de leer
if(!status) : if not status
if(status == false) : if status is false
si usted no está acostumbrado a la lectura de estado!. No veo ningún daño en la segunda forma.
si utiliza "activa" en lugar de lo que el estado if (! Activo) es más fácil de leer
'interruptor (estado) {case cierto: {...; descanso; } defecto: { ...; descanso; }} ':) – tchrist
@tchrist: ... ¿y tu punto es? – missingfaktor
switch (booleano) es incorrecto, Boolean no puede estar en el switch – ashishdhiman2007