問題タブ [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.
c# - この単純な契約を間違って実装していますか?
これは私のコードです:
私はContract.RequiresメソッドとContract.Invariantメソッドの両方を試して、vertexCount変数が2以下になるのを防ぎました。ただし、2辺以下のRegularPolygonを初期化することはできます。私の(簡略化された)NUnitテストは次のようになります。
上記のテストにも合格し、理由がわかりません。
最初は、ReSharperが何かを台無しにしていたのではないかと思いました。Contract
名前空間でメソッドを使用しようとすると、行がグレー表示され、このメッセージが表示されるためです。
メソッドの呼び出しはスキップされます。メソッドが条件付きであるか、実装されていない部分的なメソッドであるため、コンパイラはメソッド呼び出しを生成しません。
ただし、R#を一時停止してNUnitでテストを実行しても同じ結果になり、VSでもエラーや警告は発生しません。つまり、ReSharperにはまだコードコントラクトの強調表示の互換性がないからだと思います。
私はドキュメントを見てきましたが、私が知る限り、この問題は発生してはいけません。
コードコントラクトを誤って使用していますか、それとも環境によってコードコントラクトが機能しなくなっていますか?
ありがとうございました。
c# - インターフェイスタイプのコードコントラクトクラスの命名規則
名前空間のCodeContractsクラスを使用しSystem.Diagnostics.Contracts
てオブジェクトのコントラクトを定義していますが、コントラクトがベースインターフェイスに対して定義されている場合、他の人がコントラクトクラスにどのように名前を付けるのか疑問に思っています。小さな例で説明しましょう:
この例では、Contract Class AnimalContractと呼んでいますが、もっと良い名前はありますか?コントラクトはインターフェイスに対して定義されているため、クラスIAnimalContractに名前を付けて、IAnimalインターフェイスのコントラクトであることを示したいと思います。このように、ソリューションエクスプローラーで2つのアイテムを見ると、それらは視覚的に「タイアップ」されており、頭の中で物事をきれいに保つのに役立ちます。もちろん、コントラクト自体はインターフェースではないので、そのような名前を付けるのは私には悪臭がします。
このような場合、皆さん(およびギャル)はどのようにコントラクトクラスに名前を付けますか?一般的に受け入れられている規則はありますか?
c# - Check.Assert()、Check.Ensure()、およびCheck.Require()は何をしますか?
それらの機能が何をするのか教えてください。
java - 抽象メソッドのコントラクトを作成するにはどうすればよいですか?
Java プロジェクトでコントラクトを使用しています。(コントラクト=メソッドの開始時と終了時にチェックを行う)
ジェネリック メソッドのコントラクトを記述する良い方法/パターンがあるかどうか疑問に思っています。例えば:
私が欲しいのは、 の出力がgenerateLine
コントラクトを満たしていることを確認する良い方法です (この場合、最後の文字は改行文字でなければなりません)。
私はこれを行うことができると思います(しかし、より良い方法があるのだろうか)。
これが曖昧すぎないことを願っています。どんな助けでも感謝します。
java - XINS以外のJavaとのeXtremeDesign-by-Contract?
XINSに似たJavaプロジェクトの技術的な契約設計ソリューションはありますか?私は、開発者が最初にアプリケーションのコントラクトを作成し、次にそのコントラクトの境界内でコーディングし、実際にコントラクトを最大限に活用するように強制するプロジェクト/フレームワークを探しています。XINSのように、コントラクトを検証するランタイムコンポーネントを使用して、そのコントラクトからコード(サーバー側とクライアント側、単体テスト、スタブ)とドキュメント(OpenDocument、HTML、テストフォーム)を生成するものを探しています。
コントラクトは、WSDLや一連のXMLファイルなど、何でもかまいません。Springとの統合があればいいのですが。
私は過去にXINSを開発したことに注意してください(ただし、現在のメンテナではありません)。同様のソリューションが存在し、それらをどのように比較するのか疑問に思っています。
unit-testing - 引数の例外は単体テストする必要がありますか?
この質問は以前に投稿された他の質問とかなり似ていることは知っていますが、このトピックについて適切な方法で議論したいと思います.
「明白な」例外は単体テストする必要があると思いますか?
明らかな例外とは、たとえば、ユニットのビジネスロジックにより、これらの例外が常にメソッドの先頭で他のメソッドよりも先にスローされることが明らかになっている状況で、null 引数または空の文字列または負の数による例外を意味します。手術。
つまり、クラス コントラクトの最も単純な部分に違反した後にスローする必要がある例外について話しているのです。
ご意見ありがとうございます。
php - なぜ動的/緩く型付けされた言語のインターフェイス?
私はphpで働いていますが、インターフェースの概念はここでは少し役に立たないようです。読んでみると、インターフェースは「契約による設計」の一部であることがわかりますが、少なくとも特定の種類の型の戻りを保証することなく、実際には契約はありません。「私たちは次のことを行うことに同意します:」という契約書のように思えます -- 契約条件はありません。
オブジェクトがメソッドを持っていることを保証したい場合、インターフェイスが特に役立つとは思えません。オブジェクトにないメソッドを呼び出そうとすると、致命的なエラーが発生するため、そのクラスにはその名前のメソッドがないことがすぐにわかります。スマートになりたい場合は、クラスにメソッドがあるかどうかを事前に確認してから、インターフェイスを確認し、オブジェクトがそのインターフェイスを実装しているかどうかを確認しても、そのオブジェクトを直接確認するよりも時間を節約できないようです (私ならそうします)。とにかく、実装したかどうかに関係なく、クラスにそのメソッドがあるかどうかを確認します)。
つまり、特定の名前を持つ一連のメソッドを持っているからといって、特定の動作が保証されるわけではありません。特定の型の変数が返されることが保証されている場合、少なくとも出力がどうなるかについてある程度の理解があり、そのインターフェイスでオブジェクトを使用するコードを書くことができます。それの。文字列が返された場合、少なくとも後で文字列出力を処理しているという確信を持ってコーディングを続けることができます。したがって、戻り値の型が指定されている場合、少なくともいくつかの動作が保証されます。動作を保証することは、インターフェースの目的の一部ですか、それともありませんか?
私が考えることができる唯一のことは、コードを書いているとき、後でそのクラスを書くときに特定のメソッドを確実に作成するための付箋として役立つということです。コードを書いているときの足場のように思えます。実際に使ってみるとあまりメリットがありません。したがって、クラスを作成するときよりも、クラスを作成するときに標準を維持することが重要です。この利点は、契約による設計の概念に実際には反映されていないようです。
PHP のような動的/型指定の緩い言語でインターフェースを使用することで、実際にどのような利点が得られますか? それらは素晴らしいものですか、それともより堅牢な OO 言語が実装するものなので、PHP も実装しますか?
metrics - Design-By-Contract のメトリクスを使用した経験があるか、またはコード ベースでの Design-By-Contract の使用状況を測定するためのメトリクスを推奨できますか?
現在、さまざまなコンポーネントを開発している約 60 人の開発者からなるソフトウェア開発グループに Design-by-Contract を導入しています。まず、C# と Java の Design-By-Contract ポリシーを定義しました。進行状況を測定するために、キーワード (コメントと文字列リテラルを除く) を単純に検索して、クラスの数とコントラクト アサーション (前提条件、事後条件、および不変条件) の数を数えています。したがって、次の 2 つの統計があります。
- コンポーネントごとのコントラクト アサーションの数
- コンポーネントごとのクラスごとのコントラクト アサーションの平均数
Design-By-Contract のメトリクスを使用した経験があるか、またはコード ベースでの Design-By-Contract の使用状況を測定するためのメトリクスを推奨できますか?
clojure - Common Lisp の契約ライブラリによる設計?
Clojure のバックグラウンドを持つ私は、Clojure の事前/事後条件が契約による設計の基礎として提供される可能性を感じています。
Common Lisp に同様の事前/事後機能や、実際に利用可能なより包括的な Design by Contract ライブラリはありますか?
ありがとうございました
actionscript-3 - actionscript の契約ツールによる設計
iContract for Java のような
、Design by Contract(DBC) に役立つ AS-3 用のツールはありますか?
( The Pragmattic Programmerからインスピレーションを得ています)。