問題タブ [fluent-interface]
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.
java - Spring に流暢な (非 void) セッターを受け入れるようにするには?
内部 DSL に変換する API があります。そのため、私の PoJos のほとんどのメソッドは this への参照を返すため、メソッドを宣言的に連鎖させることができます (シンタックス シュガー)。
私の API は Spring に依存していませんが、引数のないコンストラクター、ゲッター、セッターを使用して PoJo フレンドリーにすることで、「Spring フレンドリー」にしたいと考えています。問題は、戻り値の型が void でない場合、Spring がセッター メソッドを検出しないように見えることです。
これの戻り値の型は、コマンドをチェーンするときに非常に便利なので、Spring インジェクションとの互換性のためにプログラム API を破棄したくありません。
非 void セッターを使用できるようにする Spring の設定はありますか?
クリス
api - 流暢なAPIは他のAPIとどう違うのですか?
DSLを勉強しているときに流暢なAPIに出くわしました。
私は流暢なAPIについて多くのことを検索しました...私が引き出すことができる基本的な結論は、流暢なAPIはコードを流暢にするためにメソッドチェーンを使用するということでした。
しかし、私には理解できません。オブジェクト指向言語では、いつでもオブジェクトを作成し、それに関連するメソッドを呼び出すことができます。では、流暢なAPIはどのように違うのでしょうか。流暢なAPIは他にどのような機能を追加しますか?
ruby - Rubyの流暢なインターフェースプログラム
次のコードを作成して実行しようとしました。
私たちが直面している問題は、
オブジェクトが異なっていても同じです。私たちが観察したのは、2番目のオブジェクト(つまり「a」)が最初のオブジェクト(つまり「e」)の値を置き換えているということです。出力は次のようになります
しかし、必要な出力は
なぜそれが起こっているのか誰かが提案できますか?オブジェクトIDが異なるため、オブジェクトは置き換えられません。オブジェクトの値のみが置き換えられます。
php - PHP OOP:チェーン可能なオブジェクト?
PHP で連鎖可能な OOP オブジェクトに関する適切な紹介を見つけようとしましたが、まだ良い結果は得られていません。
このようなことはどのように行うことができますか?
あるいは:$this->className->add('1','value')->type('string')->doStuff();
どうもありがとう!
c# - C# の新しいスタイル
Fluent API は最近非常に一般的です。最近、私が扱っているほぼすべてのシステムでそれらを見つけています。ほとんどの場合、それらは読みやすさを向上させますが、時には柔軟性のない仕様に縛られて、それらが構築する仕様の実行時の動作を理解することをほとんど不可能にします. 優れた流暢な API を作成する方法についてコンセンサスはありますか? 流暢な API を使用して構造または仕様を表現する最良の方法は何ですか?
私は最近、 NServiceBus構成クラスの流暢な API で、次の新しいバリアントに気付きました。
複数のインターフェイスを一種の線形流暢なインターフェイスとして使用します。単純な要件のみを表現しようとしているときに、余分なコードやコンテキストの負担がかからないため、気に入っています。単純な場合はそれで十分です。ただし、複雑な仕様に拡張できるとは思いません。このインターフェイスの使用についてどう思いますか?
C# で使用している他の新しいイディオムは何ですか? それらをどこで使用しますか?彼らの強みは何ですか?どこでそれらを使用しませんか? また、使用しようと考えていたイディオムの長所をどのように評価しますか?
jquery - jQuery のメソッド チェーンは流暢なプログラミングの例ですか?
私は JavaScript/jQuery に少し慣れていませんが、メソッド チェーンの例を見たとき、すぐになじみがあるように感じました。LINQ などの他のインターフェイスは、一連のメソッドの戻り値の型が操作対象の型と同じである場合に、同様の処理を行います (TweetSharp は非常に類似した処理を行います)。これは流暢なプログラミングの例ですか? 私が jQuery について読んだことの多くは、他のライブラリがこのメソッド チェーンのアイデアを「借用」したと述べています。
.net - メソッドチェーンには、単純な命令型メソッド呼び出しに比べてどのような利点がありますか?
TelerikMVCグリッドからのこのサンプルコードを見てください。
さて、このようにするよりも、それについて何が良いのでしょうか。
fluent-nhibernate - FluentNHibernateSearchを使用してオブジェクトを検索から除外するための最良の方法
ブールプロパティを持つクラスがあります。
偽の値を持つインスタンスを検索結果から除外したい。
Fluent NHibernate Searchでそれを行うための最良の方法は何ですか?
mocking - メソッドチェーンまたは流暢なインターフェイス構文に対してdouble(モック/スタブ)をテストします
私は基本的に次のように見えるテスト中のコードを持っています(特定のコードは質問にとって重要ではありません。説明のためにここにあります):
これはメソッドチェーンを使用します(そして私が探しているソリューションは流暢なインターフェース構文にも適用されます)。
私はこの特定の例の解決策を見つけることに興味はありません。より一般的な問題を解決することに興味があります。この例では、CreateCriteriaの期待値のみを追加したいと思います。ただし、これを行うと、CreateCriteriaにスタブを返さなくても、Addメソッドがnullを返すため、NullReferenceExceptionが発生します。
追加のメソッドがチェーンされている場合や、Addメソッドが削除されている場合でも、テストを引き続き機能させたいです。
メソッドチェーンを使用するときに、テストダブル/予想される呼び出しの数を、主張したいものだけに減らすための一般的なトリックはありますか?
私が考えることができる解決策は、型のすべてのメソッドを列挙し、異なるデフォルトの戻り値を与える期待値を持つスタブを作成するT4テンプレートを作成することです。しかし、もっと簡単なオプションがあるかどうか疑問に思っています。
私はRhino.Mocksを使用していますが、一般的な解決策をいただければ幸いです。
php - PHPメソッドチェーンまたは流暢なインターフェイス?
私はPHP5を使用していますが、「メソッドチェーン」と呼ばれるオブジェクト指向アプローチの新機能について聞いたことがあります。正確には何ですか?どうすれば実装できますか?