用圆括号括由逻辑“和”连接的表达式的目的

本文关键字:连接 表达式 圆括号 | 更新日期: 2023-09-27 18:04:52

一些程序员会把每个条件都用括号括起来,像这样:

风格# 1:

bool Test(string a, string b)
{
    return ((a != null) && (b != null));
}

风格# 2:

bool Test(string a, string b)
{
    return a != null && b != null;
}
在c#中,差异纯粹是风格上的(至少我是这样认为的)。第一个表达式首先求值,第二个表达式只有在第一个表达式为真时才求值(否则会短路,因为整个表达式已经被确认为假)。

有人提到上面的#1是"老C风格"。它的实际目的是什么?这两者之间是否有任何实际的区别,或者它是否是某种防止打字错误的保护措施(例如将if (true == x)写成if (x == true))。

用圆括号括由逻辑“和”连接的表达式的目的

我认为这只是防御性编码,这样代码的作者(更重要的是,未来的读者)就不会对代码的意图和功能有任何怀疑。

很久以前,我花了很多个无聊的晚上和一个同事一起写代码,他拒绝给术语加括号,因为他坚信自己有能力记住优先规则。尽管有很多相反的例子。即使你自己知道这些规则,也更容易阅读意图清晰的代码,而不是每次都重复检查。