5

Design by Contractアプローチに興味があります。それらを強制するには、preconditionsチェック済み例外を使用する必要があるようです。
しかしpost-conditions、私はそれが好ましいclass-invariantsと思います。 私は正しいですか?私が正しければ、無効にされる可能性のある forおよびアサーションが許可されるのはなぜですか? 事後条件と不変条件も強制するべきではありませんか?assertions
post-conditionsclass-invariants

4

3 に答える 3

8

コンポーネントの事後条件とクラス不変条件は、コンポーネント自体が正しく記述されていない場合にのみ失敗する可能性があります。単体テストでは、これらすべてをキャッチする必要があります。もちろん、本番環境で実際にチェックすることは許容されますが、これは必ずしもパフォーマンスのトレードオフに値するものではありません。

一方、そのコンポーネントのユーザーが正しくない場合、前提条件が失敗する可能性があります。コンポーネント自体のテストではこれらをチェックできないため、これらの単体テストが失敗するように、より積極的に失敗する必要があります。

于 2012-12-25T18:37:20.177 に答える
3

前提条件に違反することは、定義上、プログラミング エラーです。したがって、このような違反をチェック例外で通知するのは非常に残念です。正しいコードは、絶対にスローされることのない例外を明示的にキャッチし、未チェックの例外として再スローすることを強制されるため、プログラミング エラーが検出される可能性があります。

于 2013-08-09T21:17:41.223 に答える