プログラミングにおける「許可ではなく許しを求める」
「許可ではなく許しを求める」というフレーズは、有利なプログラミング スタイルを説明するためによく使用されます。正確さよりもシンプルさと堅牢さ。このスタイルは、起こり得るすべての失敗を予測してそれを防ぐコードを作成しようとするよりも、例外をキャッチして適切に処理する方が良いという考えに基づいています。
許可を求める vs. 許しを求める
「許可を求める」スタイルでは、例外を引き起こす可能性のあるアクションを実行する前に、例外を引き起こす可能性のある条件をチェックする方法でコードが記述されます。例外的に。例:
if os.path.exists(filename): with open(filename) as f: data = f.read() else: raise FileNotFoundError(f"File {filename} not found.")
「許しを乞う」スタイルでは、単にアクションの実行を試行し、発生する可能性のある例外をキャッチするコードが記述されます:
try: with open(filename) as f: data = f.read() except FileNotFoundError: print(f"File {filename} not found.")
「許しを乞う」ことが好ましい理由
「許しを乞う」ことが好ましい理由は主に 2 つあります。一般に、「許可を求める」スタイルよりも「許し」スタイルの方が好まれます。
1.同時実行の問題:
マルチスレッド プログラムや外部リソースと対話するプログラムなどの同時環境では、アクセス許可のチェックが行われた時点とその時点との間でシステムの状態が変化する可能性があります。アクションが実行されるとき。これにより、不正な結果が発生したり、不必要に例外がスローされたりする可能性があります。
2.過度に制限された権限チェック:
権限チェックが過度に制限され、コードが実際に可能なアクションを実行できなくなる場合があります。たとえば、チェックの後、開く操作の前にファイルが作成された場合、ファイルを開く前にファイルの存在をチェックすると失敗する可能性があります。
「許しを求める」を使用する場合
「許しを乞う」スタイルは、次の場合に適しています。
例
質問に示されている例は、「許しを求める」スタイルの適切な使用法を示しています。 bar 属性が後で設定される場合、アクセスする前に bar 属性の存在を確認すると失敗する可能性があります。代わりに、コードは単純に属性にアクセスして、発生する可能性のある AttributeError 例外をキャッチする必要があります。
「許しを乞う」スタイルは、コーダーがずさんだったり、次のようなコードを書いたりする必要があるという意味ではないことに注意することが重要です。例外が発生しやすいです。むしろ、起こり得るすべての失敗を予測しようとするよりも、例外を適切に処理する方が良いことを示唆しています。
以上が許可ではなく許しを求めてください: このプログラミング スタイルが適切なのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。