在一份C++ 编码风格指南中,我发现了一项特别的建议(第 41 页,建议编号 53):
左侧总是有非左值(
0 == i
而不是i == 0
)。
而且我不明白这有什么用?是否要坚持这种做法?
我不是,我不知道为什么他的做法很好。我能想到的唯一优点是可以避免将无意的赋值误认为是比较(if (foo = 0){}
与if (foo == 0){}
)
你有什么其他想法我为什么要使用它?
在一份C++ 编码风格指南中,我发现了一项特别的建议(第 41 页,建议编号 53):
左侧总是有非左值(
0 == i
而不是i == 0
)。
而且我不明白这有什么用?是否要坚持这种做法?
我不是,我不知道为什么他的做法很好。我能想到的唯一优点是可以避免将无意的赋值误认为是比较(if (foo = 0){}
与if (foo == 0){}
)
你有什么其他想法我为什么要使用它?
是的,你猜对了。这是好的,旧的尤达条件!
正如您所说,有些人使用它的原因是偶尔避免=
在他们的意思时打字==
。
由于它只捕获某些情况,即您将左值与常量或右值进行比较,并且我所知道的每个编译器都会在您犯此错误时警告您,因此这样做没有什么意义。
至少对于以英语为母语的人来说,它使代码读起来就像是倒着写的一样;所以有人称之为“尤达条件”。就像企业风格指南中的许多规则一样,它可以追溯到处理无情的编译器比编写可读代码更重要的时代。