我遇到了一些代码,这些代码翻转了如何检查条件,并想知道为什么除了一个奇怪的个人怪癖之外还要做这件事.我从未见过任何教科书使用它,也没有看到任何样本代码以这种方式完成.
// why do it this way?
if (5 == myValue)
{
// do something
}
// instead of:
if (myValue == 5)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我只是为==操作数看到了这种方式,但没有看到任何其他操作数.
nem*_*nem 14
有些人喜欢这样做,因为如果你陷入困境并键入单等号而不是双等号,"if(val = 5)"只是编译器警告,而"if(5 = val)"是错误(你不能分配常数).
我认为这有点丑陋,个人而言,你应该像你的错误一样检查你的警告,但这就是这个约定的原因(幸好不是普遍的,但至少是适度普遍的.这也是真的.它可能并不普遍被许多较旧的编译器视为警告,而且这个约定已经存在了很长时间.)
有趣的事实:我刚刚阅读Code Complete(第二版),Steve McConnell同意我的观点,说他的个人偏好是"使用数字排序并让编译器警告我有关非预期的任务".根据定义,史蒂夫麦康奈尔知道他在说什么.