Heim > Backend-Entwicklung > PHP-Tutorial > 一个函数里面用一个return 好 还是多个return 好?

一个函数里面用一个return 好 还是多个return 好?

WBOY
Freigeben: 2016-06-06 20:37:23
Original
2535 Leute haben es durchsucht

<code><?php function dmeo1($num)
 {
    if($num>0)
    {
        return true;
    }
    else
    {
        return false;
    }
 }




 function dmeo2($num)
 {    
    $status = null;

    if($num>0)
    {
       $status  = true;
    }
    else
    {
       $status  = false;
    }

    return $status;
 }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

<code><?php function dmeo1($num)
 {
    if($num>0)
    {
        return true;
    }
    else
    {
        return false;
    }
 }




 function dmeo2($num)
 {    
    $status = null;

    if($num>0)
    {
       $status  = true;
    }
    else
    {
       $status  = false;
    }

    return $status;
 }
</code>
Nach dem Login kopieren
Nach dem Login kopieren

尽早return,不要走多余的流程

<code>php</code><code>// 一般情况
function foo($num) {
    if ($num>0) {
        return true;
    }
    return false;
}


// 特殊情况:正好需要返回bool值
function bar($num) {
    return $num>0;
}
</code>
Nach dem Login kopieren

你的代码很好,我帮你重写了一遍:

原始代码:

<code>javascript</code><code>function dmeo1($num)
{
    if($num>0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
</code>
Nach dem Login kopieren

重写一遍:

<code>javascript</code><code>function dmeo1($num)
{
    flag = $num > 0;

    if(flag === true)
    {
        return true;
    }
    else
    {
        return false;
    }
}
</code>
Nach dem Login kopieren

代码思路瞬间清晰了。

多少return没关系,要保持代码的高度简洁易懂

<code>function dmeo($num) {
    return $num > 0;
}
</code>
Nach dem Login kopieren

<code>function dmeo3($num)
{
    return $num>0;
}
</code>
Nach dem Login kopieren

灵活的根据结构定

<code>function dmeo($num)
 {
    return $num>0;   
 }
</code>
Nach dem Login kopieren

那个没有高亮的是“returm”?

除去 guard condition 型的 return, 多个 return 是不是说明函数复杂了, 职责过多而需要重新考虑设计了.

尽早返回。。。

该return的时间就return,也没有强制说几个return不好,毕竟一个return代表的是一个逻辑片段,所以其实只要逻辑清晰,代码清晰就够了!

应该尽早输出return,这样会提高效率,就是说本来你经确定数据已得到,对于之后的代码,执行的意义也不大

同意@城南往事的看法,如果一个函数在第一行就可以return,那么就没必要等到最后一行,效率先不说,可读性绝对是有差别的!

使用哪种方式能带使代码更加清晰就使用哪种,不过通常情况下使用多个return是一个更佳的选择。
具体可以参考《重构-改善代码既有设计》9.5节的介绍。

老师说啦,程序应该一个出口,避免使用多return,break

如果程序中有很多防御性设计,在出错之后程序就要退出,那么就要在每次出错的时候直接return,否则就这样了:一个函数里面用一个return 好 还是多个return 好?
如果程序就是一个算法,有确定的返回值类型,那么我认为还是一个return好:

<code>function getValue($x) {
    $y = 0;
    if ($x>0) {
        $y = $x*$x;
    } else if ($x == 0) {
        $y = -1;
    } else {
        $y = 1/$x;
    }
    return $y;
}
</code>
Nach dem Login kopieren

http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement

我个人觉得第一种好,如果当一个方法很长时,用return可以看出在哪里直接退出,用第二种方法的话是不是得看到最后?

<code> function dmeo2($num)
 {    
    $status = false;

    if($num>0)
    {
       $status  = true;
    }

    return $status;
 }
</code>
Nach dem Login kopieren

我比较习惯这种写法

还是看具体情况吧,如果一些前提判断,自然需要提前返回(也就是第一种)。第二种应该是那种逻辑的操作,最后给一个执行的状态。

我更倾向于第二种,用变量去控制程序返回的结果,而不是在程序各个点直接return,程序控制,怎么会进行多余的流程呢

其实很简单,分支越少越好

为什么你们都不给他的方法改个名?

<code>function isNonNegative($num) {
    return $num > 0;
}
</code>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage