ベストプラクティスは、いつか失敗する場合にのみこれらのチェックを行うことだと思います。次の場合に役立ちます。
デバッグ
単一のメンテナを持つ 1 つのモジュール内の複数のプライベート関数がデータを交換する場合、それらをチェックする意味はありません。もちろん、特に言語に静的型システムがない場合や、データが「文字列型」である場合は例外があります。
しかし、公開 API を公開すると、ある日、誰かがあなたの前提条件を破ることになります。呼び出し元のモジュールを保守する担当者が (組織構造および物理的な場所で) 離れているほど、発生する可能性が高くなります。そして、それが発生した場合、事前条件の失敗の明確なステートメントと、それが発生した場所の仕様により、デバッグの時間を節約できます。 漏れやすい抽象化の法則は今でも真実です...
QA
前提条件の失敗は、QA がテストをデバッグするのに役立ちます。モジュールの単体テストによってモジュールが前提条件の失敗を引き起こした場合、それはコードではなく、テストが正しくないことを意味します。(または、前提条件のチェックが間違っているが、その可能性は低い)。
QA を実行する手段の 1 つが静的分析である場合、前提条件チェックに特定の表記法がある場合 (たとえば、これらのチェックのみがassert_precondition
マクロを使用する場合) も役立ちます。静的解析では、誤った入力とソース コードのエラーを区別することが非常に重要です。
ドキュメンテーション
ドキュメントを作成する時間があまりない場合は、コードに付属のテキストを補助させることができます。明確で目に見える前提条件チェックは、実装の残りの部分とは別に認識され、可能な入力をある程度「文書化」します。(この方法でコードを文書化する別の方法は、単体テストを作成することです)。