我正在使用 C#.NET 以 4 人为一组做一个项目。虽然我很自然地写下了类似的内容:
if (var_name == "some_text")
,但其中一位小组成员强烈坚持将那行更改为if ("some_text" == var_name)
并声称“这是一种更好的编程实践”,这是她从一些传感器程序员那里学到的。我们小组中没有人,甚至她自己,都不明白这背后的动机是什么,而且感觉更尴尬。这是更好的做法还是只是另一个城市神话?
4 回答
There's no good reason for this in C#.
In C you can inadvertently forget one of the = signs, and C allows this:
if (x = 5)
Which will compile and always return either true or false (true if the variable was set to any non-zero value, false if it was zero). This was a common source of errors, so writing if (5 == x)
prevents this as the C compiler would complain if you ommitted one of the = signs.
C# however does NOT allow assignment to be treated as a boolean condition, and thus its impossible to make this mistake, so the suggestion is pointless. I'd recommend sticking to the more natural "if x equals 5" style.
是的,我不是它的忠实粉丝.. 但是有.. 如果您错误地使用 operator assign ( =
) 而不是 compare 它不会编译和/或它会立即崩溃。至少在“通用”编程语言中;-)
该网络对此进行了详细介绍-http: //united-coders.com/christian-harms/what-are-yoda-conditions/
我在大学上第一堂 C++ 课时就开始这样做了,以免意外地分配一个我试图检查的值,而且它总是跟着我。但是,当我使用 C# 时,我倾向于这样做:
if (var_name.Equals("some_text"))
这不仅可以防止意外分配,而且对我来说,从视觉上看,看到 Equals() 比看到 == 更容易理解。只是我的两分钱。
当我在大学学习编程课程时,我被教导要倒着写。我们使用的是 C++,正如其他答案所说,它在 C++ 中有所不同。