操作数以比较操作员的顺序很重要



检查对象是否等于某些值时,

之间是否存在一些区别
myObject == someValue

someValue == myObject

换句话说,比较操作员操作数的顺序是否重要?这是编码样式的问题吗?

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

例如

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

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

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

谢谢。

我认为没有任何区别,或者至少没有编译器不会对同一事物进行优化。

您观察到的通常称为YODA条件。(由于语言风格的说法大声说话时的条件听起来像是类似于Yoda的说话。(它们主要是个人喜好的问题。

主张他们的人很快指出优势,例如:

if (something = true)

会产生一个运行时错误,而:

if (true = something)

会产生编译器错误并立即捕获。虽然我会反驳说单位测试应该在错误之前就已经找到了错误。同样会争辩说,团队中其他程序员的任何混乱(甚至只是您发布此问题的闲置好奇心(都是在项目上丢失的时间。但是我离题:(

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

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

两者都会产生相同的答案。我唯一能想到的是,如果您在哪里工作的地方有一个需要一种或另一种方式的编码标准(我从未见过这样的编码标准(。我会坚持您所做的当前项目的方式。

最新更新