問題タブ [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.

0 投票する
7 に答える
1138 参照

.net - void の代わりにこれを返すことに不利な点はありますか?

void を返す代わりに、特定のセマンティックな意味がなくても、クラスへの参照を返したとします。メソッドの呼び出し方法についてより多くのオプションを提供し、流暢なインターフェースのようなスタイルで使用できるように思われます。何もする必要がないので、デメリットは特に考えられません。戻り値で(それを保存することさえ)。

オブジェクトを更新してから現在の値を返したい状況にあるとします。と言う代わりに

2行を組み合わせて言うことができます


編集: 私は気まぐれに以下を尋ねました。振り返ってみると、それは不必要で複雑になる可能性が高いことに同意しますが、無効ではなくこれを返すことに関する私の質問は立っています.

関連するメモとして、言語に新しい構文糖衣を含めることについてどう思いますか。

この演算子の優先順位は低いため、myObj.Update() が最初に実行され、次に Update の void リターンの代わりに myObj で GetCurrentValue() が呼び出されます。

基本的に、「左側の最初の有効なオブジェクトの演算子の右側にあるメソッドを呼び出す」という演算子を想像しています。何かご意見は?

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

api - Castle Windsor の Fluent Interfaces API にアクセスするにはどうすればよいですか?

キャッスル ウィンザーの非 xml 構成を適切に動作させるために、多くの問題が発生しています。それまでの間、Windsor Container の流暢なインターフェースを介してアドバイスを与える人がますます増えているのを見てきました。私は最後の日についてグーグルで検索しましたが、この API がどこにも見つかりません。

IWindsorContainer オブジェクトの拡張メソッドと思われる key .Register() メソッドについて話しています。Castle.MicroKernel.Registration 名前空間にあるようですが、対応するライブラリがどこにも見つかりません!

また、このようなドキュメントを見つけることができる場所はありますか?


編集:ここのサンプル プロジェクト の Castle.MicroKernel のコピーには、私が使用していた名前空間よりも多くの名前空間があることがわかりました (これは 8 日前で v1.0.0 ですが、私のバージョンは v1.0.3 です...)。ただし、.Register() メソッドまたはサンプルを見つけるのに問題があります。

編集: Bitter Coder で流暢なインターフェイスのサンプルを いくつか見つけましたが、ダウンロード可能なサンプルがないため、まだ途方に暮れています。

再編集:やっと手に入れました。Castle Windsor の最新のソース コードはこちらから入手できます。成功した最新のビルドを取得します。zip ファイル内には bin ディレクトリがあります。流暢なインターフェイスは Castle.Microkernel 内にあります (おそらく、Castle.Dynaproxy、Castle.Dynaproxy2、Castle.Windsor も参照する必要があります)。

PS この投稿は、"castle fluent interface documentation" の Google 検索結果の第 1 位です。 コオロギの鳴き声 あれは何?罰金。これを理解させてから、それから始めます。

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

nhibernate - NHibnernate の Fluent と XML のマッピングを組み合わせる

NHibernate と流暢なインターフェースに夢中になりました。後者は、リファクタリングをサポートする非常に優れたマッピングを可能にします (xml ファイルはもう必要ありません)。

しかし、誰も完璧ではないので、流暢な多対多のマッピングが欠けています。それがすでにそこにあるかどうか誰かが知っていますか?もしそうなら、単純なコード行がいいでしょう。

しかし、質問のヘッダーに固執するために、流れるような NHibernate マッピングと通常の NHibernate マッピングを組み合わせる方法はありますか。

現在、流暢なテスト セットアップには次の行を使用し、非流暢なテスト (XML マッピングを使用) には 2 番目のコード ブロックを使用します。流暢なIF AVAILABLEとXMLを使用するように流暢に伝えるにはどうすればよいですか...

流暢でなければ...

それだけです... クリス

PS: 私はこのサイトが本当に好きです。GUI は完璧で、すべての記事の質は素晴らしいです。私はそれが巨大になると思います:-) 登録する必要があります...

0 投票する
14 に答える
25054 参照

python - Pythonのコアタイプにパッチメソッドを適用できますか?

Rubyは、Numberクラスやその他のコアタイプにメソッドを追加して、次のような効果を得ることができます。

しかし、Pythonではこれができないようです。これは本当ですか?もしそうなら、なぜですか?タイプを変更できないという事実と関係がありますか?

更新:モンキーパッチのさまざまな定義について話すのではなく、上記の例に焦点を当てたいと思います。あなた方の何人かが答えたので、私はすでにそれをすることができないと結論を下しました。しかし、なぜそれができないのか、そしておそらくPythonで利用可能な場合、どの機能がこれを可能にするのかについて、より詳細な説明が必要です。

あなたの何人かに答えるために:私がこれをしたいと思うかもしれない理由は単に美学/読みやすさです。

これは英語に似ており、次のように、テストされた値と期待値を明確に示しています。

この概念は、Rspecおよび他のいくつかのRubyフレームワークが基づいているものです。

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

c# - C#の流暢なインターフェイス

流暢なインターフェースについて質問があります。

SQLインターフェイスのパラメータオブジェクトとして使用されるオブジェクトがいくつかあります。例を次に示します。

これらのパラメーターのいくつかについて、いくつかの特殊なオプションを有効にしたいのですが、Int32メソッド(多くのパラメーターの1つにすぎません)にプロパティを追加する代わりに、流暢なインターフェイスを調べたいと思いました。

これが私が調べているものを追加した例です:

これらの2つのオプションは、このタイプのパラメーターには意味がないことを私は知っていますが、それは問題の内容ではありません。

上記の場合、SubstituteはSqlParameterOptionクラスの静的プロパティ(または、かっこを追加した場合はメソッド)である必要がありますが、Precisionはインスタンスメソッドである必要があります。

再注文した場合はどうなりますか?

その場合、Substituteはインスタンスプロパティであり、Precisionは静的メソッドである必要があります。もちろん、これはコンパイルされません。静的プロパティと非静的プロパティの両方、または同じ名前のメソッドを持つことはできません。

どうすればよいですか?私はここで完全に間違った方向に進んでいますか?

質問を読み直しているときに、私は考えを持っていました。以下のこの異なる構文はより意味がありますか?

この場合、両方ともWithが返すもののインスタンスメソッドになります。これは、このようなSqlParameterオプション用の特殊なクラスまたはインターフェイスになります。.With部分をダンプしたいかどうかはわかりません。これにより、流暢なメソッドだけでなく、オブジェクトのすべてのメソッドが公開されるためです。

アドバイスといくつかの良いURLは大歓迎です、私は多くの例を精査しました、しかしそれらはこのような例を示す傾向があります:

このページから削除)


編集: @marxidadからの応答後のフォローアップ:

このアプローチでは、Withはオブジェクトを取得し、それをパラメーターに適用する必要があります。私はそれで大丈夫です。

例として追加した構文を使用すると、次のようになります。

この場合、Withはチェーンがいつ終了したかわからないため、各オプションはその効果を直接適用する必要があります。

何が好ましいですか?オプションが後で適用する必要のあるエフェクトオブジェクトを構築するのか、それとも各エフェクトがそのエフェクトを直接適用するのか。

私の決定@marxidadが言うように、変更が元に戻せず、元に戻される可能性がある場合は、状態を構築し、例外を除いてある時点で失敗することが私が進む方法です。

ただし、この場合は、SqlParameterオブジェクトを直接変更するより単純なアプローチを使用します。

この場合、私のコードは次のようになります。

編集:ああ、それは私がただ一つのことに焦点を合わせたときのやり方です。

私はその構文を使用できません。@marxidadによって提案されているように、次の構文を使用します。

もちろん、その理由は、SqlParameterオブジェクトを引数として取るメソッドは、Withから返されるオブジェクトに対応できないため、SqlParameterオブジェクトは適切に構築および設定されていますが、意図した使用法と互換性がなくなったためです。

0 投票する
8 に答える
16247 参照

c# - C# 3 で流暢なインターフェイスを作成するためのヒント

私は、C# の流暢なインターフェイスに関するいくつかの良いヒントを求めています。私は自分でそれについて学んでいますが、私が読んでいる記事の外で他の人がどう思うかを聞きたいと思っています. 特に私は後にしています:

  1. 流暢すぎるのはいつですか?
  2. 流暢なパターンはありますか?
  3. 流暢なインターフェイスをより流暢にする C# の機能 (拡張メソッドなど)
  4. 複雑な流暢なインターフェースはまだ流暢なものですか?
  5. 流暢なインターフェースに到達するためのリファクタリング、または既存の流暢なインターフェースのリファクタリング
  6. あなたが協力した、または推奨できる良い例はありますか?

ヒントや考えを1つ、または投稿ごとに投稿できれば。彼らがどのように投票されるかも見たいです。

前もって感謝します。

0 投票する
1 に答える
813 参照

c# - 流暢なインターフェースへのEBNF

私は最近、本質的に SQL をミラーリングする C# 用の流暢なインターフェースを作成する必要がありました。はい、私は LINQ to SQL を認識していますが、「金属に近づく」ことに興味があります。つまり、本質的にC#内でIntellisensified SQL shim を提供するだけのものを持つことです。

例えば、

さて、私はこの概念を一般化できると考えていました。つまり、一般的な EBNF to fluent インターフェイス ジェネレータはどうでしょうか。そのような獣が存在するかどうか誰かが知っていますか?

0 投票する
8 に答える
12999 参照

language-agnostic - Fluent Interfaces - メソッドチェーン

私が知っている流暢なインターフェイスを構築する方法は、メソッド チェーンだけです。

C# での例を次に示します。

では、他の人はどのようにして流暢なインターフェースを作成しているのでしょうか。どのように作成しますか?どの言語/プラットフォーム/テクノロジーが必要ですか?

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

.net - MSTest 用の流暢なアサーション API はありますか?

私は最近、nUnit の流暢なインターフェースに触れてきましたが、とても気に入っています。ただし、msTest を使用しています。

フレームワークに依存しない、またはmsTest用のテストである流暢なインターフェースがあるかどうかは誰にも分かりますか?

0 投票する
4 に答える
464 参照

coding-style - returnステートメントを使用すると非常に効果的です。

戻り値のあるメソッドを作成するときは、通常、デフォルト値を返さなければならないような方法でメソッドが呼び出されないように設定します。私が始めたとき、私はしばしば何かをするメソッドを書き、それらがしたことを返すか、何かをしなかった場合はnullを返しました。しかし、コード全体に醜いif(!null)ステートメントがあるのは嫌いです。

実用的なプログラマーが何ヶ月も前に読んだルビーのリガイドを読んでいますが、通常は何も返さないのに、しばしば戻ってくるself(ruby's )ことに気づきました。thisこれは、この例のように、属性を設定したオブジェクトを返すセッターを使用して、メソッド呼び出しをチェーンできるようにするためであると彼らは言います。

最初は、この種のものが魅力的だと思います。メソッド呼び出しをチェーンできることに喜びを感じたことが何度かありますが、Player.getHand().getSize()これは、メソッド呼び出しのオブジェクトがステップごとに変わるという点で多少異なります。

Stack Overflowは戻り値についてどう思いますか?戻り値を考えるときに心に浮かぶパターンやイディオムはありますか?欲求不満を避けて美しさを増すための素晴らしい方法はありますか?