14

returnPHP関数に関して、BOOLEANまたはSTRINGを返す関数が必要ない場合、関数を自動的に返すのではなく、条件の失敗時に宣言することに違いはありますか?

例えば、

次の間に内部的な違いはありますか?

function check() {
    if( 5 > $v ) {
        die('yes');
    }
}

function check() {
    if( 5 > $v ) {
        die('yes');
    }
    else {
        return;
    }
}

明らかに、「IF」条件の失敗に対してまったく同じことを行うように見えますが、内部的には、メモリ、セキュリティ、使いやすさ、または全体的なベストプラクティスの点で、一方が他方よりも優れていますか?

4

4 に答える 4

10

これらのステートメントには、メモリやセキュリティの点で効果的な実際の違いはありません。なし、灘、zip、ゼロ。それらは完全に同一です。追加のオペコードを保持するために必要な数バイトは関係ありません。オペコードの解析、トークン化、および解釈に費やされる時間を気にする場合は、マイクロ最適化に取り組んでいます。

「使いやすさ」という点では、前者の方がはるかに明確です。から戻るのelseばかげています。ライブコードでそれを見た場合、それを書いた人は誰でもそうするときに気が散ってしまい、クリーンアップしたと思います。

于 2012-12-19T02:30:47.983 に答える
1

2番目の例のreturnは、パーサーとコンパイラの動作を増やし、読者を混乱させ、コードに不要な行を追加し、アプリのサイズを合計して増やす代わりに何もしません。最終的には、何の価値もありません。

于 2012-12-19T02:40:35.030 に答える
0

私は最初のものが好きです。組み立てラインが少ないため、わずかに効率的です(速度ではなくバイナリサイズで)。すべての関数は、関数の内容に関係なく、関数の実行時にリターンアドレスを定義するため、リターンを追加すると、命令が追加されます。

私はそれがより読みやすく、より一般的でもあると思います。

于 2012-12-19T02:30:37.270 に答える
0

前者は読みやすく、後者はプリプロセッサにオーバーヘッドを追加するだけである(そしてファイルサイズを肥大化させる)と私は主張します。ただし、関数が特定のものを返さないことも明確になります(ただし、関数名またはコメントは、この目的のためだけにロジックブランチよりも簡単にこれを行うことができます。

私はこれらが例であることを認識し、感謝していますが、簡潔で簡潔なものに固執します。

[/私見では]

于 2012-12-19T02:31:50.617 に答える