2012-04-09 62 views
8

在一个C++ coding style guide, 我发现一个特定的建议(41页,建议号53):C++ styleguide:为什么在左边有非左值?

总是对左侧非左值(0 == i代替i == 0)。

我不明白这有什么好处?是要坚持这种做法?

我不是,我不知道他为什么是一个好习惯。我能想到的唯一好处是可以避免错误地将一个无意的任务与一个比较相混淆(if (foo = 0){}if (foo == 0){}

您有任何其他想法为什么要使用它?

+0

我不使用它。自从我创建了一个=/==错误已经很多年了。对于我来说,经验和技巧对我来说比对待尤达情况这样的尴尬表达更好。你决定使用还是不使用应该基于你是否喜欢它,你是否觉得它对你有帮助,以及你的项目的编码标准是否禁止或需要它。 – 2012-04-09 17:00:23

+2

'(0 == i)'的优点是它可以捕获一些'='与'=='错误。缺点是阅读它会使我的眼睛流血。 – 2012-04-09 17:50:01

回答

14

是的,你猜对了。这是好的,旧的Yoda condition !!!

enter image description here

+2

大部分。真棒。链接。永远。爱“埃及方括号!” – 2012-04-09 17:00:56

+1

+1链接! – 2012-04-09 17:01:33

+0

哈哈! :)我在这个谷歌搜索,我喜欢这个行话。太糟糕了原始的计算器池已被删除。无论如何,尤达条件多久使用一次?大部分或少数程序员正在使用它? – Novellizator 2012-04-09 17:05:47

3

正如你所说的,有些人用它偶尔避免打字时=他们的意思==的原因。

因为它只抓住某些情况下,你要比较一个左值具有恒定或右值,每一个编译器,我知道的会警告你,如果你犯类似的错误,还有在做很少的一点就是。

至少对母语为英语的人来说,它使得代码被读取为好像它被反写;所以有人称之为“尤达条件”。像企业风格指南中的许多规则一样,它的历史可以追溯到处理不可编译的编译器比编写可读代码更高的优先级。

相关问题