我正在做一些改变成旧的代码比需要维护,我发现这样的事情
public boolean aMethod(){
boolean isValid = true;
**isValid = isValid &&** executeGetDocs(id.toString(),program().toString(), document.get(name));
return isValid;
}
该方法executeGetDocs可以返回true或false。
但我不知道,如果**的isValid =的isValid && ** executeGetDocs是正确的或仅仅是多余的。
所以我在这里,任何人都可以请,给我这个解释一下?
非常感谢!
EDITED
整个方法:
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;
}
这是在你原来的问题是多余的。您发布的原始方法可以减少到:
public boolean aMethod() {
return executeGetDocs(id.toString(),program().toString(), document.get(name));
}
因为(true && x) == x
任何boolean
x
。
但是,因为你改变了这个问题,答案也会改变。现在boolean
变量可以在一个循环中改变多次。因此它是有道理的和可变的前值(可能是true
或false
)与另一个boolean
,这可能会导致它的价值变化。
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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句