声明“==”条件的标准准则是什么?

时间:2011-08-08 14:48:13

标签: java c++

  

可能重复:
  What is the difference between these (bCondition == NULL) and (NULL==bCondition)?

请参阅以下代码: -

if(myVariable==5)
   {
     //some logic
   }

我的一位朋友说,这不是编写代码的好方法,因为它不符合指导原则,但他没有任何理由。以上代码或意外修改是否有可能出现异常?据他说,更好的方法是

if(5==myVariable)
       {
         //some logic
       }

请让我知道哪种方式更好,为什么???如果你有任何链接,请提供链接。

10 个答案:

答案 0 :(得分:10)

写作的唯一理由:

5 == variable

而不是

variable == 5

在前一种情况下,如果您错误地将赋值(单=)放在适当位置,则会出现编译时错误,因为您试图覆盖常量。

但是,如果你这样做,任何体面的编译器都会给你一个警告:

if (variable = 5)

所以恕我直言,这不值得担心。我总是使用后一种if (var == num)形式。


然而,在Java中, 值得使用的常见模式。在测试字符串是否相等时,应该使用:

if ("constant".equals(variable)) { ... }

而不是:

if (variable.equals("constant")) { ... }

因为后者可以触发空指针异常,而前者不能。

答案 1 :(得分:4)

在某些语言(如C,

)中,逆转更为可取
if (x = 5) {
   ...
}
如果您错误输入=而不是==

意外地将x分配给值5。通过反转这两个参数,编译器会正确地反对您重新分配值5。

与C / C ++不同,对于像Java这样的语言,它不是一个问题,因为

if (x = 5) {
   ...
}

不是有效的声明。不过我仍然遵循上述做法。在Java和C / C ++之间交换时,我不必重新思考。

答案 2 :(得分:2)

两者都是一样的。选择你觉得哪些更具可读性......我会先用

答案 3 :(得分:2)

对于那个特定情况,技术上更安全5 == variable,因为如果你不小心说5 = variable,编译器就会抱怨。另一方面,variable = 5完全合法。

答案 4 :(得分:2)

此惯例旨在防止您在if (myVariable=5)时意外写if (myVariable==5)

答案 5 :(得分:1)

对于==,您执行此操作的顺序并不重要。

你的朋友提到了“指南” - 也许这是一个商业规则?虽然是一个任意的,半无意义的......

答案 6 :(得分:1)

这无关紧要。我更喜欢第一个,因为它更具可读性。

我希望您知道使用==对于引用类型并不总是正确的。在这些情况下,您应该更喜欢equals。那么重要,因为你想避免空指针异常。在这种情况下,最好取消引用不能为null的实例。

答案 7 :(得分:0)

我发现没有这样的指导。 应遵循第一种方法,因为它更具可读性。

答案 8 :(得分:0)

我想如果你知道他们是否等于那就好了。 但如果你想了解字符串,那么我更适合使用'.equals'。

e.g:

object.equals("something");

答案 9 :(得分:0)

我唯一能想到的是避免constant = expression类型的语法错误,或者避免C ++中的操作符过载。在Java中,这两个表达式在语法上都是有效的,并且选择一个表达式是另一个选择。