今日、上級開発者からコード レビューのコメントを受け取りました。彼が指摘したことの 1 つは、各関数には return ステートメントを 1 つだけ含める必要があるということです。これは単なるコード スタイルの問題なのか、それともセキュリティ上の問題 (関数スタックの問題や初期化されていない変数など) があるのだろうかと思います。複数のreturnステートメントの短所を示すために、誰かが例(私はC\C++\C#を好む)を提供できますか? どうもありがとう。
2 に答える
アセンブリでは、関数の最初にスタックを設定した後、すべての関数がスタックを復元する必要があります。これは、クリーンアップ スタック コードを複数回記述しない限り、関数からのエスケープがないことを意味します。
これは、実際にパラメーターを持つか、他の関数を呼び出すか、ローカル変数を格納する関数にのみ適用されます。フラット システム アセンブリは、必要なときにいつでも返すことができます。
プログラムの正しさについては、1 回のエントリと 1 回のリターンで、ループとジャンプをできるだけ少なくし、意図を持って推論する方がはるかに簡単です。複数の return ステートメントは、多くの人を失望させます (しかし、人々はまだ適応することができます)。
複数のリターンを悪とは呼びません。必要な場合もあれば、多くの場合、階乗プログラムのように理にかなっています。
Google で検索すると、このトピックについて何時間も読むことができます。短いバージョンは、多くの古い言語では 1 つの戻りポイントしか許可されないということです。また、古い手続き型コーディング スタイルでは、数千行の長さのメソッドを使用するのが一般的でした。言語要件でなくても、各メソッドの末尾に 1 つの return があると、コードが読みやすくなることが多くの人に知られています。
今日に早送りします。オブジェクト指向のベスト プラクティス、主に単一責任の原則に従っている場合、メソッドは 50 行未満で読みやすいものにする必要があります。リターンポイントが複数あっても問題ありません。実際、深くネストされたコードを防ぐのに役立ちます。
そこで終わりにします。この StackOverflow questionに気付きました。それを読んでください。