使用xor运算符进行布尔检查是否是好习惯?

我个人喜欢独占或^ ,操作符,因为它的简洁性在布尔检查的上下文中是有意义的。 我更喜欢写作

if (boolean1 ^ boolean2)
{
  //do it
}

if((boolean1 && !boolean2) || (boolean2 && !boolean1))
{
  //do it
}

但是我经常会从其他有经验的Java开发人员(不仅仅是新手)中感到困惑,有时还会评论它应该如何才能用于按位操作。

我对使用^运算符的最佳实践感到好奇。


你可以简单地使用!=来代替。


我认为你已经回答了你自己的问题 - 如果你从人们看起来很奇怪,用更明确的选择去做可能更安全。

如果你需要对它进行评论,那么你可能会更好地用更复杂的版本替代它,而不是让人们首先提出问题。


我发现我有很多类似的谈话。 一方面,你有一个实现你的目标的紧凑,高效的方法。 另一方面,你有其他的团队可能不理解的东西,这使得未来很难维护。

我的一般规则是询问所使用的技术是否可以期望一般程序员知道。 在这种情况下,我认为期望程序员知道如何使用布尔运算符是合理的,所以在if语句中使用xor是可以的。

作为一个不好的例子,可以使用xor交换两个变量而不使用临时变量。 这是一个我不希望每个人都熟悉的技巧,所以它不会通过代码审查。

链接地址: http://www.djcxy.com/p/9981.html

上一篇: Is it good practice to use the xor operator for boolean checks?

下一篇: How does XOR variable swapping work?