比较运算符的操作数顺序重要吗? [重复]

问题描述 投票:0回答:2

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

myObject == someValue

someValue == myObject

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

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

例如

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

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

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

谢谢。

c# coding-style
2个回答
2
投票

我认为没有任何区别,或者至少没有编译器不会优化到相同的东西。

您所观察到的情况通常称为“尤达条件”。 (因为大声说出这些条件时听起来的语言风格,类似于尤达说话的方式。)而且它们主要是个人喜好的问题。 拥护者很快就会指出其优点,例如:

if (something = true)

可能会产生运行时错误(取决于所使用的语言,如果不是 C#),而:

if (true = something)

应该

产生编译器错误并立即被捕获(至少在大多数语言中,如果不是所有语言)。 尽管我反驳说单元测试应该在错误进一步发展之前就发现错误。 同样,团队中其他程序员的任何困惑(即使只是您发布此问题的闲置好奇心)都会在项目上浪费时间。 但我离题了:)


0
投票

(1 != 2) = true (2 != 1) = true

两者都会得到相同的答案。我能想到的唯一重要的是,您工作的地方是否有一个需要一种或另一种方式的编码标准(我从未见过这样的编码标准)。  我会坚持与您当前正在进行的项目相同的方式。

© www.soinside.com 2019 - 2024. All rights reserved.