我有点困惑,我想这个问题只是一个偏好问题,我只是想了解以下代码的区别。
if (IsRegistered() == true) ...
public boolean IsRegistered()
{
private boolean status = false;
// blah blah code here
return status;
}
VS
isRegistered = IsRegistered();
if (isRegistered)
我知道两者都有效,我不是很迂腐,但我只是想明白,所以我会知道我的方式。
答案 0 :(得分:2)
if (isRegistered() == true) ...
这是冗长的,因为你知道它是否会返回true它会这样做,如果没有,它就不会。所以它与做的一样:
if (isRegistered()) ...
它做什么,它只是从方法中获取返回的布尔值并检查if语句中的条件。
现在,如果您想再次检查布尔值,则需要重新调用该方法(可能必须执行复杂的操作才能返回该值),但是如果先将其分配给变量,然后检查条件,像这样:
boolean isRegistered = isRegistered();
if (isRegistered)...
稍后在代码中,您可以再次执行此操作,而无需再次调用该方法。
if (isRegistered)... // n lines later.
因此,避免再次执行该过程。
在一天结束时,它几乎取决于你需要做什么。
答案 1 :(得分:0)
当您调用具有非void返回类型的方法时,该方法本身会以与使用变量相同的方式解析为某个值。您可以直接使用该值,也可以将其分配给变量并使用它。
答案 2 :(得分:0)
只需使用:
if ( IsRegistered() )
这是最易读的代码。将变量设置为“unbox”后,该方法将无济于事;编译器将其拾取并在内部优化过程中将其替换为控制代码本身。
此外,当机器的自我优化被放在一边时,IsRegistered()
方法的性能取决于“我的代码在这里”的工作方式:
source : {
private boolean status = false;
// blah blah code here
return status;
}
optimization-passed : {
return false; // When internal code does not modify "status"
preturn _status; // When internal code modifies "status"
}