有些程序员会将每个条件包装在自己的括号中,如下所示:
风格#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)
)。
答案 0 :(得分:12)
我认为这只是防御性编码所以代码的作者(更重要的是,未来的读者)对代码的意图和功能没有任何疑问。
很久以前,我花了很多乏味的工作时间与同事一起工作,因为他一直坚信自己有能力记住优先规则。尽管有许多相反的例子。即使你自己了解这些规则,也更容易阅读意图清晰的代码,而不是每次都仔细检查。