問題タブ [design-by-contract]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
175 参照

dynamic-languages - Design-by-Contract は動的言語に簡単に/静的に型付けされた言語にも適用できますか?

タイトルは要点をほぼ要約しています。

動的言語を使用するときに、不十分な/診断されていない障害の重大なリスクを冒すことなく、契約の強制を有効/無効にすることができるかどうかに興味がありますか?

そうでない場合、(私には) 要点は、DbC の強制の取り外し可能性の精神に従って、任意の/取り外し可能なものではなく、強制がコンポーネントのロジックの必須部分であるということです。

0 投票する
3 に答える
561 参照

java - Design by Contract ライブラリ (インターフェイス) の考えは?

私はJavaライブラリの契約による設計を検討しています.これは、これまでのところインターフェースの観点から思いついたものです.

ユーザーは executeContract を呼び出すことができ、executeContract は「require」を呼び出した後に invokeContract を呼び出します。enable は executeContract の後に呼び出され、invokeContract によって返される内容が正確であることを確認します。

このコードは、コールバック メソッド (匿名の内部クラス呼び出し) としても機能します。

あなたの考えは何ですか?これは契約による設計ですか?、これまでのところ、これはテスト可能な Java コードを作成するのに役立ちます。

0 投票する
5 に答える
2732 参照

design-by-contract - Design by Contract プログラミングのベスト プラクティスとは

Design by Contract プログラミングのベスト プラクティスは何ですか。

大学では、契約パラダイムによる設計を学びました (OO 環境で)。問題に取り組むための 3 つの方法を学びました。

1) トータル プログラミング : その効果で考えられるすべての例外的なケースをカバーします (cf. 数学)

2) Nominal Programming : 前提条件が満たされた場合にのみ、正しい効果を「約束」します。(それ以外の場合の効果は未定義)

3) 防御的プログラミング : 例外を使用してメソッドの不正な呼び出しを知らせる

さて、さまざまな OO シナリオで、それぞれの状況での正しい使用法に焦点を当ててきましたが、いつ、どれを使用するかについては学習していません... (ほとんどの場合、演習によって強制される戦術..)

今、私が先生に尋ねなかったのは非常に奇妙だと思います (しかし、講義中は誰も質問しませんでした)。

個人的には、私は現在ノミナルを使用することはなく、前提条件を例外に置き換える傾向があります(したがって、「前提条件:除算器はゼロとは異なる必要がある」と述べるよりも、IllegalDivisionByZero をスローします)、意味のある合計のみをプログラムします(したがって、ゼロ除算の従来の値) ですが、この方法は個人的な調査結果と好みに基づいています。

だから私はあなたたちに尋ねています:

ベストプラクティスはありますか??

0 投票する
3 に答える
664 参照

java - 引数チェックまたはJavaでの契約による設計(GWT)。どこから始めれば?

私はGWTをプレイしています。基本的な引数チェックを探しています。不変条件や結果の保証は必要ありません。このトピックに関するベストプラクティスについて私が興味を持っていること。

たとえば、C#では次のいずれかのオプションを使用します。

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

私が始めるのに最適な場所はどこですか?

さて、今のところ見つけたもの。

  1. メソッド引数を検証する
  2. アサーションを使用したプログラミング
0 投票する
7 に答える
10192 参照

c# - ReSharper-Microsoft.Contractsを使用するときにヌル割り当てが発生する可能性があります

契約による設計がチェックを必要とするためにnull参照が発生しないことをReSharperに示す方法はありますか?たとえば、次のコードは、Possible 'null' assignment to entity marked with 'NotNull' attribute7行目と8行目のReSharperで警告()を発生させます。

本当に奇妙なのは、Contract.Requires(...)行を削除すると、ReSharperメッセージが消えることです。

アップデート

私はExternalAnnotationsを通じて解決策を見つけました。これは、以下のMikeによっても言及されています。これは、Microsoft.Contractsの関数に対してこれを行う方法の例です。

  • ReSharperディレクトリMicrosoft.Contractsの下にというディレクトリを作成します。ExternalAnnotations
  • 次に、というファイルを作成し、次のMicrosoft.Contracts.xmlように入力します。

  • Visual Studioを再起動すると、メッセージが消えます。
0 投票する
2 に答える
848 参照

.net - .NET 4.0 の契約による設計は、Eiffel と比べてどうですか?

私は、大学で Eiffel を Bertrand Meyer 自身から教わることができて「楽しかった」のです。

Eiffel の既存の機能セットと比較して、これがどれほど強力になるかについて、洞察力のある人は詳しく説明できますか?

インターフェイスのコントラクトはサポートされますか?

0 投票する
0 に答える
290 参照

.net - Microsoft Contracts: アセンブリの読み込みにより、メタデータのインポートに関する警告が表示されました

Microsoft Code Contractsライブラリの使い方を学ぼうとしていますが、次の単純な機能があります。

これをコンパイルしようとすると、契約の静的コンパイラは次の警告メッセージをスローします。

そしてすぐにあきらめます (そして、それ以上の契約処理を行おうとはしません)。設定するコードを削除するとDefaultToolsVersion、コントラクト検証ツールは正しく機能しますが、コードが正しくなくなるため、これはかなり無意味です。

Googleでこれについての言及が見つかりません...これを修正できる方法はありますか、それとも契約ライブラリの単なるバグですか? (もちろん発売前の状態です)

ありがとう