比较运算符的操作数顺序是否重要?

时间:2017-05-31 19:07:29

标签: c# coding-style

当检查对象是否等于某个值时,是否存在以下差异:

myObject == someValue

someValue == myObject

换句话说,比较运算符的操作数的顺序是否重要?这是编码风格的问题吗?

我一直在使用前者,但是一个项目一直在使用我从未见过的后者。

例如

if (data != null)
    data.Write(writer);

if (null != data)
    data.Write(writer);

我一直在使用前者,而项目中的一些成员一直在使用后者。

感谢。

2 个答案:

答案 0 :(得分:2)

我认为没有任何区别,或者至少没有一个不同的是编译器无论如何都不会优化到同一个东西。

您所观察到的内容通常称为Yoda Conditions。 (由于朗读时声音条件的语言风格,与尤达所说的相似。)而且他们主要是个人偏好。

提倡他们的人很快就会指出优势,例如:

if (something = true)

会产生运行时错误,而:

if (true = something)

会产生编译错误并立即被捕获。虽然我反驳说单元测试应该在它到达之前找到错误。并且同样会争辩说团队中其他程序员的任何混淆(即使只是你发布这个问题的空闲好奇心)也会在项目上浪费时间。但我离题了:))

答案 1 :(得分:0)

我认为它们是一样的。如果我说:

(1 != 2) = true

(2 != 1) = true

两者都会得到相同的答案。我能想到的唯一问题就是如果你工作的地方有一个需要这种或那种方式的编码标准(我从未见过这样的编码标准)。我会坚持你工作的当前项目的方式。