契約プログラミングについてですが、事前条件についてはわかりましたが、残りの二つについてあまり理解ができません。
例えば以下の簡単なFunctionにて事前条件の違反となれば、二つの引数を想定しているのに対して一つだけやまたはタイプの違うstringを渡してもErrorで帰ってきます。これを事前条件の違反というのはsimpleで分かりやすいですが、事後条件と不変条件はwikipediaで見ても難しい言葉で説明してあってあんまりイメージがわきません。
大変初歩的な質問ではあると思いますが残り二つの違反とはどういうものなのか書きの簡単なFunctionを例に説明していただければと思います。
事後条件 (postcondition)
サブルーチンが、終了時に保証すべき性質。
不変条件 (invariant)
クラスなどのオブジェクトがその外部に公開しているすべての操作の開始時と終了時に保証されるべき、オブジェクト毎に共通した性質。
コードを呼ぶ側が事前条件と不変条件を満たす義務を負うことで、呼ばれたコードはその条件が恒真であるとの前提を利益として得る。引き換えに、呼ばれたコードは事後条件と不変条件を義務として負い、呼ぶ側の利益としてこれを保証する。...wikipediaより
Python
1def add_cal(a,b): 2 sum = a + b 3 print(sum) 4 5add_cal(3)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。