从函数中的多个点返回



这或多或少是一个可读性、可维护性和/或最佳实践类型的问题。

我想知道大家对某事的看法。从一个函数的多个点到return是不好的做法吗?例如,

<?php
  // $a is some object
  $somereturnvariable = somefunction($a);
  if ($somereturnvariable !== FALSE) {
        // do something here like write to a file or something
  }
  function somefunction($a) {
        if (isset($a->value)) {
              if ($a->value > 2) {
                    return $a->value;
              } else {
                    return FALSE;
        } else {
              // returning false because $a->value isn't set
              return FALSE;
        }
  }
  ?>

还是像

<?php
  // $a is some object
  $somereturnvariable = somefunction($a);
  if ($somereturnvariable !== false) {
        // do something here like write to a file or something
  }
  function somefunction($a) {
        if (isset($a->value)) {
              if ($a->value > 2) {
                    return $a->value;
              } 
        } 
        return FALSE
  }
  ?>

作为实践问题,我总是尝试从任何函数中的一个点返回,这通常是最后一点。我将它存储在一个变量中,比如$retVal,并在函数结束时返回它。它使代码在我看来更合理。

话虽如此,在某些情况下,在您的函数中,作为第一行,您检查var是否为空,如果是,则返回。在这种情况下,保留该变量,然后添加额外的检查以跳过所有函数代码以最终返回该变量是没有意义的。

所以…总之,两种方法都有效。这取决于当时的情况,以及你对哪种方式更满意。

最新更新