有效地检查和设置变量

时间:2015-10-29 02:41:08

标签: java c vba

我是编程新手并且有一个简单的问题:是否有更好的"或更有效的方式......

if (x != 0) {
  y = x;
}

if (getMethod() != null) {
  value = getMethod();
}

我对编程和上面的代码(尤其是第二代)的新手似乎效率低下。

提前致谢。

3 个答案:

答案 0 :(得分:1)

你的第二个例子可能遭受“检查时间,使用时间”的弱点。如果第一次调用getMethod()返回非null,则第二次调用可能会返回null。更好的方法是:

   value = getMethod();
   if(NULL != value)
   {
       /* use value as planned */
   }
   else
   {
       /* handle a null value, probably an error */
   }

如果有兴趣,您可以阅读有关TOCTTOU弱点的更多信息here

对于你的第一个例子,我真的没有看到更好的方法。

N.B。这个答案是从C程序员的角度来看的(看看C是你的标签之一)。

希望这会有所帮助 - T。

答案 1 :(得分:0)

你可以缩短

  if ( x )  y = x;

相同
 if (x != 0) {
  y = x;
 }

并且

 if ( getMethod() ) value = getMethod();

相同
 if (getMethod() != null) {
   value = getMethod();
 }

答案 2 :(得分:0)

第一段代码: 在C中,任何非零值都被视为wrap_contentdrawable被视为true。因此,对于第一个示例,您可以将其重写为:

0

第二段代码: 您曾两次致电false,效率不高。根据您的代码,如果if (x) { y = x; // this line will be executed if x not equal to zero } 返回除getMethod()之外的任何内容,则您将getMethod()的返回值分配到value。因此,您可以使用临时变量来检查getMethod()的返回值,如下所示:

NULL

这将减少两次调用相同的方法。