条件样式: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)
尝试将某些内容分配给常量时会出现编译错误。
在我看来,这在编程风格方面有更多,但对于新程序员来说仍然是一个很好的提示。 但是一旦你有点经验,这样的错误就不会发生,如果他们这样做,你应该能够很容易地追踪它们。