有没有什么好的理由去写东西"向后",例如:if(" some_text" == var_name)?

时间:2012-09-25 20:07:48

标签: c# coding-style

我正在使用C#.NET以4人为一组进行一个项目。虽然我自然写下了类似的东西: if (var_name == "some_text"),其中一位小组成员坚决要求将这一行更改为if ("some_text" == var_name)并声称“这是一种更好的编程习惯”,她从一些传感器程序员那里学到了这一点。我们小组中没有人,甚至她自己都不明白这背后的动机是什么,除了感觉更尴尬。这是一种更好的做法,还是只是另一种都市神话?

4 个答案:

答案 0 :(得分:11)

在C#中没有充分的理由

在C中,你可能会无意中忘记其中一个=符号,C允许这样:

if (x = 5)

将编译并始终返回true或false(如果变量设置为任何非零值,则为true;如果为零,则为false)。这是一个常见的错误来源,因此编写if (5 == x)可以防止这种情况,因为如果您省略了其中一个=符号,C编译器会抱怨。

然而,C#不允许赋值被视为布尔条件,因此不可能犯这个错误,所以这个建议毫无意义。我建议坚持使用更自然的“if x equals 5”风格。

答案 1 :(得分:6)

是的,我不是它的忠实粉丝..但是有..如果你错误地使用运算符assign(=)而不是比较它将无法编译和/或它会立即崩溃。至少在“常见”编程语言中; - )

此网络对此有更多了解 - http://united-coders.com/christian-harms/what-are-yoda-conditions/

答案 2 :(得分:2)

当我参加我的第一个C ++课程时,我开始在大学里这样做,以便不小心分配我试图检查的值,而且它总是跟着我。但是,当我使用C#时,我倾向于这样做:

if (var_name.Equals("some_text"))

这不仅可以防止意外分配,而且在视觉上看到Equals()比看到==更加理解。只是我的两分钱。

答案 3 :(得分:1)

当我参加大学的编程课程时,我被教导要向后写。我们使用的是C ++,正如其他答案所说,它在C ++中有所不同。