t_wの輪郭

Feedlyでフォローするボタン
契約assert

契約プログラミング

2024/2/24 13:49:00

私の雑な理解

関数の引数と返り値をassert(表明)や型でチェックするプログラミングのスタイル。

assertでチェックするのは当たり前の前提のチェックにとどめると良いらしい。例えば、「ユークリッド距離は負数を返さない」など。

嬉しさ

関数を使うときに、呼び出しのネストが浅いところでassertでエラーになって、どういう間違いをしているか教えてもらえると楽。
さらにいうと、引数が型になっていて、エディターが間違いを教えてくれるともっと楽。実行しなくても間違いに気づけるので。

『契約プログラミング的な方法――事前条件と事後条件の表明(assertion)を関数に埋め込む――とテストの関係が整理できていません。 事前条件と(クラス不変条件を含む)事後条件を関数内部やクラス内部で表現できるなら、テストに関しては単に適当な境界値を渡して呼び出すだけのように… | mond』あれあれconsole.assert()

あれ

2024/3/20 15:14:00

関数に事前条件と事後条件を設定したら、コードの間違いを良い感じにエディタ上で警告出してくれるツールほしい。

console.assert()

2024/2/24 13:42:00

第一引数がfalseだと第二引数をエラーとして出力するやつ。
よくあるassert文と異なり、エラーを出力しても処理は止まらないので注意が必要。
「開発環境では動いて本番環境では処理しない」みたいな機能は提供されていないので、契約プログラミングとして用いる場合はいい感じに頑張る必要がある。