我有一些简单的逻辑来检查字段是否有效:
private boolean isValidIfRequired(Object value) {
return
(required && !isEmpty(value)) || !required;
}
它告诉该字段是有效的,如果它是必需的而不是空的或不需要。
我不喜欢这个|| !必填部分只需要的东西会更好。 如何简化此方法以使其更易读和简单?
答案 0 :(得分:6)
如何'回合:
private boolean isValidIfRequired(Object value) {
return !required || !isEmpty(value);
}
或(感谢@Peter Lawrey)
private boolean isValidIfRequired(Object value) {
return !(required && isEmpty(value));
}
在任何一种情况下,如果required
为false
,||
或&&
表达式将short-circuit和isEmpty
将永远不会被调用。如果required
为true
,则会评估||
或&&
的后半部分,调用isEmpty
并返回该调用的(反向)结果。
答案 1 :(得分:1)
isValidIfRequired()的预期返回是返回true。
因此,特殊情况必须作为监护人的细则开始:
private boolean isValidIfRequired(Object value) {
if (required && empty(value)) //guardian clausule
return false;
return true;
}
对我来说,上面的代码比包含ANDs ORs和否定的表达式一起使用更具人类可读性