我是编程新手并且有一个简单的问题:是否有更好的"或更有效的方式......
if (x != 0) {
y = x;
}
或
if (getMethod() != null) {
value = getMethod();
}
我对编程和上面的代码(尤其是第二代)的新手似乎效率低下。
提前致谢。
答案 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_content
,drawable
被视为true
。因此,对于第一个示例,您可以将其重写为:
0
第二段代码:
您曾两次致电false
,效率不高。根据您的代码,如果if (x) {
y = x; // this line will be executed if x not equal to zero
}
返回除getMethod()
之外的任何内容,则您将getMethod()
的返回值分配到value
。因此,您可以使用临时变量来检查getMethod()
的返回值,如下所示:
NULL
这将减少两次调用相同的方法。