多くのサブルーチン復帰
プログラムすることが可能return
とexit
必要性のいずれかの時点での制御構造、終了サブルーチンのこのタイプ。
- あなたが読みやすさを向上させることができた場合は、使用し
return
; - 防衛条項(早期復帰や早期終了)で、複雑なエラー処理を簡素化します。
- 各サブルーチンは削減
return
数を。
再帰
問題のごく一部を解決するため、自分のための責任サブルーチン内の再帰的な、それはまた、多くの小片に問題を打破して、個別に各部分を解決するために自分自身を呼び出します。
再帰的手法
- 再帰が停止することができます確認してください。
- 無限再帰を防ぐために、安全なカウンタを使用します。
- サブルーチンに限定再帰。
- 慎重にスペースを積み重ねます。
- 階乗やフィボナッチ列を計算する再帰を使用しないでください。
に行きます
野党の引数に行きます
使用に反対する人々goto
の一般的な理由は以下のとおりです。使用しないgoto
高品質なコードであるコードを。
- これは、含まれている
goto
フォーマットを配置することが困難であるコードを、 - 使用
goto
の最適化機能は、コンパイラを破壊します。 - 使用する
goto
コードが小さく、より速く実行します。 - 使用は
goto
厳密にトップダウン操作でなければなりませんコードの原則に反するだろう。
ビューをサポートするために行きます
goto
支持者は慎重に、通常、特定の状況で使用する必要性を強調goto
関わらず無差別使用の、というよりも。
- 適切な位置ならば、
goto
コードの重複を減らすことができます。 goto
内のリソースの解放後の資源の利用、資源の日常的配分に非常に有用。- いくつかのケースでは、
goto
それはコードを高速に実行させ、小さいです。 - それは使用されない高レベルのプログラミングと等しくありません
goto
。 - 現代の多くの言語が含まれています
goto
。
後藤使用の概要原則
- 直接構造化された制御文をサポートしていない言語で、使用
goto
これらの制御構造をシミュレートします。 - 言語は、制御構造相当を構築した場合は、使用しないでください
goto
。 - コードは使用の効率を向上させることにある場合は
goto
、実際のパフォーマンスの向上を測定するために移動してください。 - あなたは、文の構造をシミュレートする、または単に各サブルーチンを使用しようとする場合を除き
goto
グレード。 - あなたは、文の構造をシミュレートする、または作るためにしようとする場合を除き、
goto
前方ジャンプではなく、後方ジャンプを。 - すべてのことを確認してください
goto
ラベルがアップに使用されています。 - 確認が
goto
実行されたコードの一部を持っていません。 - 特定のために
goto
展開論争の用途全体的な状況に影響を与えていません。
チェックリスト:珍しい制御構造
リターン
- []各サブプログラムは、必要なときだけするために使用する必要があり
return
ますか? - []を使用し
return
ての読みやすさを向上させるために助けを?
再帰
- []再帰サブルーチンはそれを再帰的に停止するためのコードが含まれていますか?
- []サブルーチンのセキュリティカウンタは、サブルーチンがそれを止めることができることを保証するには?
- []再帰はその中だけサブルーチンに位置していますか?
- 【】サブプログラム再帰の深さは、それを満たすためにプログラムスタック能力の範囲内にありますか?
- []再帰ルーチンは、それを達成するための最良の方法ですか?これは、単純な反復処理、それよりも良いですか?
後藤
- []最後の手段としてのみ使用されていますか
goto
?あなたが使用している場合はgoto
、単にかどうかの強化可読性と保守性のために、? - それは効率ファクタに使用される場合、[]
goto
は、この測定は、効率を高めるために、それを説明するために作りますか? - []サブルーチンせいぜい
goto
ラベルまだ? - []すべては
goto
それをジャンプしない後方、前方にジャンプする必要がありますか? - []すべて
goto
のラベルには、それを使用していますか?
点数
- 複数の
return
サブプログラムの可読性と保守性を向上させることができ、かつ深いネストされたロジックの発生を回避します。 - 再帰は非常にエレガントに、問題のほんの一部を解決することができます。その使用は注意が必要です。
- いくつかのケースでは、
goto
それが読みやすく、保守し、コードを記述するための最良の方法です。しかし、これは非常にまれです。絶対に必要な場合を除き、使用しないでくださいgoto
。