条件样式:if(0 == resultIndex)vs if(resultIndex == 0)

我们大多数人写的条件如下:

if (resultIndex == 0) 

…但偶尔我会遇到一些人写作:

 if (0 == resultIndex) 

……有趣的是,那些人一直是作家,而且看起来非常热门的编码员。

那么为什么有些人选择“倒退”风格呢? 背后有一些历史吗? Readabililty?


重复: 为什么人们经常在C#中看到“null!= variable”而不是“variable!= null”? 。

虽然我似乎无法找到Dup,但之前已经多次询问过。

从本质上讲,这种风格是来自C的宿醉,这是一个常见的错误

 if (c == 5) //Comparison 

 if (c = 5) //Assignment 

在后一种情况下,编译不会抱怨所以人们这样写它是为了减少这种情况发生的可能性

 if (5 == c) 

它是来自C的遗产,其中常见的错误是写入

 if (x = 0) {...} 

如果你教自己反过来编写这些测试,那么编译器会在你输入==错字时抱怨,而不是默默地添加一个错误。

因为(在C中,大多数程序员可能已经学习过;我不记得这是否存在于C#中)如果你以“常规”样式留下一个=字符,你将覆盖你想要比较的值(你将检查赋值的布尔值)。 如果以“向后”方式执行此操作,则会出现编译器错误。

在C#中,整数值不会隐式转换为boolean,因此if (a = 0)产生编译器错误并且不编译。 因此,这种做法在C#中已经过时且完全不必要。

我相信这背后的主要原因是为了防止错误,例如:

 if (variable = 0) 

您在条件中分配而不是比较的位置。 之所以会出现相反的原因,是因为表达式的左侧有一个常量。

所以,如果你错误地写道:

 if (0 = variable) 

尝试将某些内容分配给常量时会出现编译错误。

在我看来,这在编程风格方面有更多,但对于新程序员来说仍然是一个很好的提示。 但是一旦你有点经验,这样的错误就不会发生,如果他们这样做,你应该能够很容易地追踪它们。