更简单的逻辑条件来检查非空要求

时间:2011-11-15 14:22:48

标签: java refactoring logic boolean

我有一些简单的逻辑来检查字段是否有效:

private boolean isValidIfRequired(Object value) {
    return
        (required && !isEmpty(value)) || !required;
}

它告诉该字段是有效的,如果它是必需的而不是空的或不需要。

我不喜欢这个|| !必填部分只需要的东西会更好。 如何简化此方法以使其更易读和简单?

2 个答案:

答案 0 :(得分:6)

如何'回合:

private boolean isValidIfRequired(Object value) {
    return !required || !isEmpty(value);
}

或(感谢@Peter Lawrey)

private boolean isValidIfRequired(Object value) {
    return !(required && isEmpty(value));
}

在任何一种情况下,如果requiredfalse||&&表达式将short-circuitisEmpty将永远不会被调用。如果requiredtrue,则会评估||&&的后半部分,调用isEmpty并返回该调用的(反向)结果。

答案 1 :(得分:1)

isValidIfRequired()的预期返回是返回true。

因此,特殊情况必须作为监护人的细则开始:

private boolean isValidIfRequired(Object value) {

  if (required && empty(value))   //guardian clausule
      return false;

  return true;
}

对我来说,上面的代码比包含ANDs ORs和否定的表达式一起使用更具人类可读性