java 简化的多条件检查

guykilcj  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(101)

我有一个方法,检查多个条件,并返回一个布尔值。想检查是否有任何方法来重构代码。

public static void isEligible(Response response) {
  boolean isAttr1Set = isAttr1Set(response);
  boolean isAttr2Set = isAttr2Set(response);
  boolean isAttr3Set = isAttr3Set(response);
  boolean isAttr4Set = isAttr4Set(response);
  Logger.log("Attr1 " + isAttr1Set);
  Logger.log("Attr2 " + isAttr2Set);
  Logger.log("Attr3 " + isAttr3Set);
  Logger.log("Attr4 " + isAttr4Set);
  return isAttr1Set() && isAttr2Set() && isAttr3Set() && isAttr4Set();
}
yquaqz18

yquaqz181#

假设你在返回之前就把代码拉出来了(看起来你只把它用于调试),那么我觉得这段代码看起来很紧凑!另外,注意你在一个void方法上返回了一个布尔值,但这不会使它通过编译!

abithluo

abithluo2#

将返回类型void改为boolean。接下来,给你的局部变量命名不同于方法的名称。最后,在布尔检查中使用已经检索到的值,而不是再次调用方法:

public static boolean isEligible(Response response) {
  boolean is1Set = isAttr1Set(response);
  boolean is2Set = isAttr2Set(response);
  boolean is3Set = isAttr3Set(response);
  boolean is4Set = isAttr4Set(response);
  Logger.log("Attr1 " + is1Set);
  Logger.log("Attr2 " + is2Set);
  Logger.log("Attr3 " + is3Set);
  Logger.log("Attr4 " + is4Set);
  return is1Set && is2Set && is3Set && is4Set;
}

相关问题