在 IF 条件下使用 NOT 运算符

2022-09-01 10:10:00

为了避免在 IF 条件下使用 NOT 运算符,以使代码更具可读性,这真的是一种好的做法吗?我听说更好,然后if (doSomething())if (!doSomething()).


答案 1

这真的取决于你想要完成什么。如果你没有其他条款,那么似乎很好。但是,如果您有if(!doSomething())

if(!doSomething()) {
    ...
}
else {
    // do something else
}

我可能会颠倒这个逻辑,去掉运算符,让子句稍微清晰一些。!if


答案 2

作为一般语句,最好使 if 条件尽可能可读。对于您的示例,请使用 !还可以。问题是当事情看起来像

if ((a.b && c.d.e) || !f)

你可能想做这样的事情

bool isOk = a.b;
bool isStillOk = c.d.e
bool alternateOk = !f

那么你的 if 语句被简化为

if ( (isOk && isStillOk) || alternateOk)

它只是使代码更具可读性。如果你必须调试,你可以调试 isOk vars 集,而不必挖掘作用域中的变量。它对于处理NPE也很有帮助 - 将代码分解成更简单的块总是好的。