围绕由逻辑"和"加入的表达式括号的目的

时间:2014-05-22 20:06:40

标签: c# c

有些程序员会将每个条件包装在自己的括号中,如下所示:

风格#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#中,差异纯粹是风格(至少,我认为是这样)。第一个表达式首先计算,第二个表达式仅在第一个表达式为真时计算(否则它会短路,因为整个表达式已经确认为false)。

有人提到上面的#1是旧的C风格"。它的实际目的是什么?这两者之间是否有任何实际差异,或者它是否是某种防止错别字的保护措施(比如写if (true == x)而不是if (x == true))。

1 个答案:

答案 0 :(得分:12)

我认为这只是防御性编码所以代码的作者(更重要的是,未来的读者)对代码的意图和功能没有任何疑问。

很久以前,我花了很多乏味的工作时间与同事一起工作,因为他一直坚信自己有能力记住优先规则。尽管有许多相反的例子。即使你自己了解这些规则,也更容易阅读意图清晰的代码,而不是每次都仔细检查。