「D言語/関数」の版間の差分
削除された内容 追加された内容
Angol Mois (トーク | 投稿記録) D言語/オブジェクト指向に移動 |
Angol Mois (トーク | 投稿記録) 編集の要約なし |
||
406 行
契約プログラミングを公式にサポートしている言語はいまのところ少ない。(非標準のライブラリなどでサポートされている言語はそこそこあるが、しかしプログラム言語の標準ライブラリでサポートされている言語は、かなり少ない。)
=== 契約の使い方に関する注意 ===▼
'''契約をユーザーの入力のチェックに使ってはいけない'''。契約とは、あくまでも自身が書いたアルゴリズム、コードの正しさをチェックするためのみに存在するものである。関数の定義域を制限したい場合は、Assertion Error ではなく例外やエラーメッセージを残すべきである<ref>Andrei Alexandrescu 著, 長尾 高弘 (翻訳) 『プログラミング言語D』翔泳社 2013年 第一版 10章「契約プログラミング」より</ref>。▼
readf() などの関数を使うと、キーボードからの入力を受け付けるので、それを使って数値をいろいろと入力して、契約プログラミングのコードをテストしてみよう。▼
==== 悪い例 ====
;コード例
449 ⟶ 452行目:
もちろん、プラスの「5」など契約に適合した数値を入れているかぎりは、動作する。
これは、「'''契約をユーザーの入力のチェックに使ってはいけない'''」という決まりに反しており、契約の誤った使い方である。もちろん、決まりを破ってでも契約によるエラーメッセージを出したい理由があるならばそうすることもできるが、特段の理由がない限りは避けるべきである。
▲=== 契約の使い方に関する注意 ===
▲'''契約をユーザーの入力のチェックに使ってはいけない'''。契約とは、あくまでも自身が書いたアルゴリズム、コードの正しさをチェックするためのみに存在するものである。関数の定義域を制限したい場合は、Assertion Error ではなく例外やエラーメッセージを残すべきである<ref>Andrei Alexandrescu 著, 長尾 高弘 (翻訳) 『プログラミング言語D』翔泳社 2013年 第一版 10章「契約プログラミング」より</ref>。
== 参考文献 ==
|