哪种方法更好,返回true还是false?

4
也许我的问题不重要,但每当我在项目上工作时,它就会在我的脑海中浮现。因此,我想知道从性能角度来看哪种方法更好,并且我也想知道是否有任何其他副作用。 代码1:
if ($result === TRUE){
    // some statements 
    return TRUE;
}else{
    // some statements
    return FALSE;
}

Code 2:

if ($result === FALSE){
    // some statements
    return FALSE;
}

// some statements
return TRUE;

请注意,当条件为真或假时,我必须处理一些代码,这就是为什么我放置了注释"// some statements"的原因。

1
在我看来,第二个更简洁,因为它减少了嵌套。 - Voreny
1
我不认为这真的有什么区别,但我会选择第一个,因为它使代码更易读。 - Nijraj Gelani
代码2:在某些情况下是否存在任何副作用? - Arun Pratap Singh
1
我认为#2更快,因为编译器不会检查ELSE块。从编译器和计算机体系结构的记忆中,第二个是编译器喜欢写汇编的,因为它需要更少的指令集。但我无法证明 :) - Mehran
差别微乎其微。很可能块内的语句对性能的影响比检查本身更大(没有看到它们就无法确定)。个人而言,我更喜欢桶子条款(#2),因为它具有较少的测试,并清楚地显示了快乐路径。 - Gordon
显示剩余3条评论
3个回答

3
两者的性能相同。选择更易读的那一个,第一个可以帮助您获得类似V形的形状。
if($result) {

} else {
  for() {
    if($result2) {
      //code
    }
  }
}

因此,我更喜欢第二种方式,这对于高级程序员来说更易于阅读,但对初学者来说有点困惑。


0

我总是遵循这个模式:

// declare result as true by default
$result = true;

// some logic that will decide on the status of result

if (!$result) // this is same as $result === false
{
    return $result = false;
}

return $result;

优点:

否则块被跳过。因此代码更少,但如果您需要否则块,则无法使用此方法。


0

返回 $result===TRUE?TRUE:FALSE;


OP想在某些语句之间执行一些语句(请注意OP代码中的“一些语句”注释)。此外,如果$result已经是布尔值,那么你也可以直接返回$result - Gordon
@AlexisPeters,做!!$result有什么意义?双重否定很难读懂,而且return $result可以在更短的时间内完成相同的操作。 - Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接