1

私は英語を母国語としないので、他の人にとって不快に聞こえるような DSL を作成しないように注意してください。プロジェクトから DI コンテナーが出現し、別のプロジェクトとして分離しています。のような構文を使用している他の DI/IOC コンテナーが表示されますbind(interface).to(class)。次の(疑似コード)を使用します。

given(interface).thenUse(class)
given(class).constructWith(id=5)
given(class).inject(observer).inMethod(addObserver)

これらは理にかなっていますか、それとも、これらの単語のより細かい意味論を理解していない誰かからの構築のように聞こえますか?

4

1 に答える 1

2

あなたのアプローチは、他のDIプロジェクトの例と同じくらい理にかなっていると思います。

いくつかのメモ:

  1. bind/は/toよりも書き込みが短いです。これ自体は問題ではありませんが、短い名前で同じ意味を実現できる場合は、長い名前を使用する理由はあまりありません(与えられた例では両方とも同じように読みます)giventhenUse

  2. 同じ用途で確立された名前パターンがある場合、実装に来る確立されたパターンを知っているユーザーにとっては、生活が楽になります(たとえば、概念/意味を把握する)。これは利点になります。

    他の同様のライブラリ/ツールのユーザーを自分のものに「変換」した後は、smae命名規則を使用すると、それらのユーザーの参入障壁が低くなります。

    ただし、実装が概念的に異なる場合は、いくつかの方法がありますが、異なる名前を使用して、違いを強調し、認知的不協和を減らす方がよい場合があります(予想されることと起こっていることの間)。

    他の命名パターン(の1つ)に認知的不協和(名前が意味するものと実際に行うことの間)を生み出す欠陥があると思う場合、それをより良い命名スキームに置き換えることは、より多くのフォロワーを意味する可能性があります。

  3. given(class).inject(param).inMethod(method)英語ではよく読めますが、誰かにとって直感に反する可能性のあるオブジェクトの順序があります(オブジェクト指向言語の自然な順序であるclass / method / paramとは対照的に、class / param / method :) Class.method(param);; 検討:given(class).and(method).useParam(param)

于 2012-05-21T19:36:05.900 に答える