8

時間の経過とともに大規模なコードベースをリファクタリングしています。長期的には、システム全体をクラスで開発する予定ですが、それまでの間、PHP のスキルを磨き、数百の Web サイトで使用しているレガシー コードの一部を改善する機会を利用しています。

私は、カスタム関数からデータを返す最善の方法について、相反する記事を読んできました。一般的に、議論は、技術的なベスト プラクティスに関するものと、読みやすさと表現のしやすさに関するものの 2 つのカテゴリに分類されます。

カスタム PHP 関数から戻るときのベスト プラクティスと見なされるものについての意見 (詳しく説明したもの) に興味があります。

たとえば、この基本的な理論関数を使用して従うべきより良い基準として、次のうちどれを採用するかについては未定です。

アプローチ

戻り変数を設定し、関数の最後に返す:

<?php
function theoreticalFunction( $var )
{
    $return = '';
    if( $something > $somethingelse ){
       $return = true;
    }else{
       $return = false;
    }
    return $return;
}
?>

アプローチ b.

各エンドポイントに戻る:

<?php
function theoreticalFunction( $var )
{
    if( $something > $somethingelse ){
       return true;
    }else{
       return false;
    }
}
?>

重複する可能性があるのは、true または false を返す関数を使用するための PHP のベスト プラクティスは何ですか? ただし、上記の基本的な例にもかかわらず、これは単に true または false に限定されません。

PSR ガイドラインに目を通しましたが、何も表示されませんでした (ただし、見落としている可能性があるため、参照して PSR を参照してください:))。

元の質問を拡張する:

期待される/望ましい出力タイプに応じて、返すために使用されるメソッドは異なりますか?

この方法は、手続き型またはオブジェクト指向プログラミング方法の使用に応じて変わりますか? この質問が示すように、オブジェクト指向は独自の奇抜さをもたらし、可能な書式設定/表示オプションをさらに拡張します PHP でのリターン メソッドのベスト プラクティス

説明を明確にするようにしてください。なぜあなたが好みの方法を選んだのか、また別の方法よりもその方法を選んだ理由が何かに興味があります.

4

6 に答える 6

5

私は早期復帰を好む傾向があります。何が起こっているのかを理解したらすぐに関数を離れます。「ガード条項」と呼ばれる場合、この用途の 1 つのタイプ

私がよく行うその他のことにはelse、デフォルトの final を削除することが含まれます。

if ($something > $somethingelse) {
   return true;
}
return false;

実際、フォームの条件 は、if (boolean) return true; else return false(より明確な場合) にさらに短縮できますreturn ($something > $somethingelse);。このようなコードから複雑な if 句を便利な名前の関数に抽出すると、コードの意味を大幅に明確にすることができます。

于 2015-05-15T09:58:29.947 に答える
0

私はバリアントbを好みます。return読みやすくなるだけでなく (ステートメントの後の残りのコードを考慮する必要がないことは正確にわかっています)、フェイルセーフも向上します。

残りのコードにバグがある場合、またはシステムの設計時に考慮しなかった一連の条件に遭遇した場合、結果が変わる可能性があります。return [$someVariable];で関数を終了すると、これは発生しません。

于 2015-05-15T09:56:00.643 に答える