从函数中的多个点返回

时间:2013-05-03 18:27:53

标签: php maintainability

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

我想得到SO的意见。来自函数中多个点的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
  }
  ?>

1 个答案:

答案 0 :(得分:1)

作为一种练习,我总是尝试从任何功能中的一个点返回,这通常是最后一点。我将它存储在变量说$retVal中,并在函数的末尾返回它。它使代码看起来更加清晰。

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

所以......最后,两种方式都有效。它总是取决于具体情况以及您更熟悉的内容。