检查对象是否等于某些值时,
之间是否存在一些区别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
两者都会产生相同的答案。我唯一能想到的是,如果您在哪里工作的地方有一个需要一种或另一种方式的编码标准(我从未见过这样的编码标准(。我会坚持您所做的当前项目的方式。