-5

ねえ、私は数年前からプログラミングをしていて、つい最近、常に何かを返すメソッドで何をするのが最善か疑問に思っていました。

if($age < 18) {
    return 'Under 18';
}
else {
    return 'Adult';
}

または、以下を使用する方が良いですか:

if($age < 18) {
    return 'Under 18';
}
return 'Adult';

後者の場合、18歳未満の場合、プログラムは「18歳未満」を返し、残りの関数を終了します。最初の例では、else {}が必要ですか?ありがとう。

4

5 に答える 5

0

どちらもプログラム的には同じです(2つ目は操作が多いかもしれませんが、計算の観点からは完全に同じです)。したがって、唯一の変更は美的です。コードを変更しない場合は、2番目のオプションをお勧めします。しかし、それが成長するのであれば、最初のオプションに興味があるかもしれません。

コードが大きくならない場合は、個人的に次のように設定します。

return ($age < 18) ? 'Under 18' : 'Adult';

または、リクエストによっては、これでも興味深い場合があります。

return ($age >= 18);

機能性と読みやすさを維持しながら、不要なコードを削除して肥大化を防ぎます。シンプルで完全に理解できるようにすることができれば、複雑にしないでください。ここでアインシュタインを引用したくなります(;

于 2012-11-25T12:58:40.837 に答える
0

早く帰ったほうがいいです。elseが条件をさらに悪化させる場合は、ネストされます。

簡略化された(他にない)例

//nested (without return)
if ($a == 1) {
    if ($a == 2) {
        if ($a > 2) {

        }
    }
}

//return early
if ($a == 1) {
    return 1;
}

if ($a == 2) {
    return 2;
}

if ($a > 3) {
    return $a;
}

説明

早く戻ることが望ましい理由は、(私の意見では)脳がネストされたifをどのように処理するかということです。ネストされたif構造を読み取ると、以前のif条件を常に追跡しているように見えます。私がしたようにそれを平らにすると、あなたの脳が処理するのがより簡単になります(それが同じことをすることを考えると奇妙です)。

returnステートメントまですべてのコードを読み取る必要がないため、一般的に早い段階で戻る方が適切です。実行も高速ですが、コード自体によってどれだけ高速になるかによって異なります。

参考文献

https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from

于 2012-11-25T13:02:17.747 に答える
0

これらの例の両方に正しい方法も間違った方法もあるとは思いません。両方とも機能します-個人的なコーディングスタイルが実際の主な要因です。私自身は後者のスタイルを使用します。そうすれば、ifステートメントが(より複雑な状況で)中断された場合でも、関数/メソッドは常に何かを返すことができます。

于 2012-11-25T12:46:13.563 に答える
0

個人的な好みの問題だと言う人もいますが、メソッド/関数に1つのエントリポイントと1つの出口ポイントを設定するのが最善だと思います。これは通常、関数フローのデバッグと制御に役立ちます(したがってreturn、途中で突然「驚かされる」ことはありません。したがって、コードは次のようになります。

$result = 'Adult';
if($age < 18) {
    $result = 'Under 18';
}

return $result;

サンプルコードは、むしろ書かれるべきであるため、実際には幸運ではありません。

return ($age < 18) ? 'Under 18' : 'Adult';
于 2012-11-25T12:48:15.973 に答える
0

私に関しては、最初のものの方が読みやすいです。しかし、大きな違いはありません。

于 2012-11-25T12:48:46.693 に答える