代码之家  ›  专栏  ›  技术社区  ›  WSBT

有什么好的理由“向后”写东西吗,例如:if(“some_text”==var_name)?

  •  6
  • WSBT  · 技术社区  · 13 年前

    我用C#.NET做了一个4人一组的项目 if (var_name == "some_text") ,其中一名成员强烈要求将该行改为 if ("some_text" == var_name) 并声称“这是一种更好的编程实践”,这是她从一些传感器程序员那里学到的。我们团队中没有人,甚至连她自己都不明白这背后的动机是什么,而且感觉更尴尬。这是一个更好的做法,还是只是另一个城市神话?

    4 回复  |  直到 13 年前
        1
  •  11
  •   Andy    13 年前

    没有什么好的理由 在C中#

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

    if (x = 5)

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

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

        2
  •  6
  •   korCZis    13 年前

    是的,我不太喜欢它。但是有。。如果你错误地使用运算符assign( = )它将不会编译和/或立即崩溃,而不是进行比较。至少使用“通用”编程语言;-)

    这张网页告诉更多的信息- http://united-coders.com/christian-harms/what-are-yoda-conditions/

        3
  •  2
  •   PiousVenom    13 年前

    我在大学里上第一节C++课时就开始这样做了,目的是为了不意外地分配一个我试图检查的值,它总是跟着我。然而,当我使用C#时,我倾向于这样做:

    if (var_name.Equals("some_text"))
    

    这不仅防止了意外的赋值,而且对我来说,从视觉上看,看到Equals()比看到a==更容易理解。只有我的两分钱。

        4
  •  1
  •   user1704124    13 年前

    当我在大学学习编程入门课程时,有人教我把它倒过来写。我们使用的是C++,正如其他答案所说,它在C++中有区别。