アサートを使用するためのベストプラクティスは?質問する

アサートを使用するためのベストプラクティスは?質問する
  1. assertデバッグ目的のみで使用せず、標準コードの一部として使用した場合、パフォーマンスやコードのメンテナンスに問題はありますか?

    assert x >= 0, 'x is less than zero'
    

    より良いか悪いか

    if x < 0:
        raise Exception('x is less than zero')
    
  2. また、関数の先頭で設定した場合のように、コード全体のいつでも が0 未満になるとエラーが発生し、関数内のどこでも が 0 未満になると例外が発生するようにif x < 0 raise error、常にチェックされるようなビジネス ルールを設定する方法はありますか?try/except/finallyxassert x < 0x

ベストアンサー1

アサートは、決して発生しないはずの条件をテストするために使用する必要があります。その目的は、プログラムの状態が破損した場合に早期にクラッシュさせることです。

例外は、発生する可能性のあるエラーに対して使用する必要があり、ほとんどの場合、独自の Exception クラスを作成する必要があります


たとえば、設定ファイルから に読み込む関数を作成している場合dict、ファイル内のフォーマットが不適切な場合は が発生するはずですConfigurationSyntaxErrorが、assertを返そうとしていないことがわかりますNone


あなたの例では、x値がユーザー インターフェイスまたは外部ソースから設定される場合は、例外が最適です。

同じプログラム内の独自のコードによってのみ設定される場合x、アサーションを使用します。

おすすめ記事