在 IF 条件下使用 NOT 运算符

新手上路,请多包涵

为了提高代码的可读性,避免在 IF 条件下使用 NOT 运算符真的是一个好习惯吗?我听说 if (doSomething())if (!doSomething()). 更好

原文由 Eugene 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

这真的取决于你想要完成什么。如果您没有 else 子句,那么 if(!doSomething()) 似乎没问题。但是,如果你有

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

我可能会反转该逻辑以删除 ! 运算符并使 if 子句更加清晰。

原文由 Bill the Lizard 发布,翻译遵循 CC BY-SA 2.5 许可协议

作为一般性陈述,最好使您的 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 变量集,而不必深入研究作用域中的变量。它还有助于处理 NPE——将代码分解成更简单的块总是好的。

原文由 hvgotcodes 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏