4

可能重复:
为什么一个函数应该只有一个出口点?

作为一名计算机科学专业的学生,​​我一直认为函数中应该只有一个出口点,最后。

例如。这:

function foo()
{

    //do stuff here

    if($bar)
    {
         $out = FALSE;
    }
    else
    {
         $out = TRUE;
    }
    return $out;
}

不是:

function foo()
{

    //do stuff here

    if($bar)
    {
         return FALSE;
    }
    return TRUE;
}

然而,我已经看到第二种退出类型经常在其他人的 php 代码中使用,甚至在某些框架的核心代码中(比如我最近一直在使用的 Kohana)。这种退出函数的方法在 php 标准中被认为可以吗?

编辑:我可以明白为什么有人告诉我不要这样做,因为它可以更容易地跟踪一个退出点的函数中的某些问题,其他时候我可以看到为什么应该允许它,因为其他问题可以更好地解决或跟踪具有多个退出点的函数。

编辑 2:在代码示例中添加了“do stuff here”注释以使人们开心

4

3 回答 3

2

我一直使用后一种路线,因为您必须声明$out并存在另一个变量。但回想起来,它只是一个布尔值——它没有造成任何伤害。第一条路线可能看起来更干净,具体取决于代码的上下文。

这一切都归结为一致性。只要您有一个系统,确定何时使用路线 1 或路线 2,您就做得很好。

于 2012-06-04T16:49:31.057 回答
2

它是六个之一,或六个另一个 - 幸福在于一致性。

于 2012-06-04T16:50:56.540 回答
2

我已经看到(好的)代码返回值两种方式。如果您使用的框架/代码库始终使用一种方式,我会遵循这一点。否则,请使用您喜欢的东西。:D

于 2012-06-04T16:52:46.430 回答