9

在一份C++ 编码风格指南中,我发现了一项特别的建议(第 41 页,建议编号 53):

左侧总是有非左值(0 == i而不是i == 0)。

而且我不明白这有什么用?是否要坚持这种做法?

我不是,我不知道为什么他的做法很好。我能想到的唯一优点是可以避免将无意的赋值误认为是比较(if (foo = 0){}if (foo == 0){}

你有什么其他想法我为什么要使用它?

4

2 回答 2

14

是的,你猜对了。这是好的,旧的尤达条件

在此处输入图像描述

于 2012-04-09T16:55:46.683 回答
3

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

由于它只捕获某些情况,即您将左值与常量或右值进行比较,并且我所知道的每个编译器都会在您犯此错误时警告您,因此这样做没有什么意义。

至少对于以英语为母语的人来说,它使代码读起来就像是倒着写的一样;所以有人称之为“尤达条件”。就像企业风格指南中的许多规则一样,它可以追溯到处理无情的编译器比编写可读代码更重要的时代。

于 2012-04-09T17:09:57.123 回答