【问题标题】:Elegant way to handle null -- Only single null value required amongst 2 variables处理空值的优雅方式——两个变量中只需要一个空值
【发布时间】:2017-03-17 00:57:58
【问题描述】:

有没有更好的方法来解决这个问题? 我有两个变量 X 和 Y。X 和 Y 都不能为空。这两个都不能设置。其中只有 1 个应该为 null

例如:

if (x && y)
    return err;
if (x == null && y == null)
    return err;
if (x)
 …do something with x
if (y)
..do something with y

【问题讨论】:

  • 听起来像是代码异味。您很可能有更深层次的设计问题。如果您的代码示例不那么广泛(使用具体信息,例如这些变量的用途),那肯定会有所帮助

标签: java logic


【解决方案1】:

您可以像这样合并错误检查:

if ((x == null) == (y == null)) {
    return err;
}
if (x != null) {
    // do something with x
} else {
    // do something with y
}

【讨论】:

  • 另一种方式,即((x == null) != (y == null)),也可以使用boolean logical exclusive-or operator,即((x == null) ^ (y == null)),由于运算符优先规则,不需要额外的括号,即@987654325 @.
【解决方案2】:

这个问题更适合codereview,但通常最好避免使用聪明的代码。如果你特别想合并两个错误情况,就写

if (x != null && y == null) {
    // do something with x
} else if (y != null && x == null) {
    // do something with y
} else {
    return err;
}

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多