Estoy haciendo algunos cambios en el código antiguo que requiere mantenimiento, y me encontré con algo como esto
public boolean aMethod(){
boolean isValid = true;
**isValid = isValid &&** executeGetDocs(id.toString(),program().toString(), document.get(name));
return isValid;
}
El método executeGetDocs pueden devolver verdadero o falso.
Pero no estoy seguro de si: ** = isValid isValid && ** executeGetDocs es correcta o es redundante.
Así que aquí estoy, ¿Puede alguien por favor, dame un poco de explicación de esto?
¡Muchas gracias!
EDITADO
método entero:
private boolean validateDocs(List<Map<String, Object>> documentsList) {
boolean isValid = true;
StringBuilder gradoAntComp = new StringBuilder();
for (Map<String, Object> document : documentsList) {
String id = document.get("ID_DOC").toString();
if (id.equalsIgnoreCase("25")) {
isValid = getData(id.toString(),program().toString(), document.get(name))
} else if (id.equalsIgnoreCase("26") ) {
isValid = isValid && getDocs(id.toString(),program().toString(), document.get(name));
}
}
return isValid;
}
Era redundante en su pregunta original. El método original informados podría reducirse a:
public boolean aMethod() {
return executeGetDocs(id.toString(),program().toString(), document.get(name));
}
ya que (true && x) == x
para cualquier boolean
x
.
Sin embargo, ya ha cambiado la pregunta, la respuesta cambia también. Ahora, la boolean
variable puede cambiar varias veces dentro de un bucle. Por lo tanto, tiene sentido y el valor anterior de la variable (que puede ser true
o false
) con otro boolean
, que puede provocar su valor para cambiar.
private boolean validateDocs(List<Map<String, Object>> documentsList) {
boolean isValid = true;
StringBuilder gradoAntComp = new StringBuilder();
for (Map<String, Object> document : documentsList) {
String id = document.get("ID_DOC").toString();
if (id.equalsIgnoreCase("25")) {
// this can set isValid to either false or true
isValid = getData(id.toString(),program().toString(), document.get(name))
} else if (id.equalsIgnoreCase("26") ) {
// therefore performing logical AND between the previous value of
// isValid and some additional boolean is meaningful - isValid will
// be assigned true only if it was true before this statement AND
// getDocs(id.toString(),program().toString(), document.get(name)) is true
isValid = isValid && getDocs(id.toString(),program().toString(), document.get(name));
}
}
return isValid;
}