2009-07-14 15 views
4

私は最初の流暢なインターフェイスを作成しようとしていますが、私は他のポープルの考え方がより流暢で、どちらが使いたいと思っているのだろうかと思っていました。間違いなくより流暢な構文ですか?

Check.Field().Named("est").WithValueOf("sdsd").IsNotNull() 

Check.Field("est").WithValueOf("sdsd").IsNotNull() 

Check.Field("est").WithValue("sdsd").IsNotNull() 

乾杯 アンソニー

答えて

4

最終1:

Check.Field("est").WithValue("sdsd").IsNotNull() 
3

私は同意する:できるだけ

Check.Field("est").WithValue("sdsd").IsNotNull() 

として短い、まだ感覚をしながら。

.as. .of. .and. .in.などのノイズワードは、文脈上の意味がない限り避けてください。私はこれを行う流暢なインターフェイスを見てきました。そして、実行時にジャンプするアプリケーションのためのより多くの入力と多くのフープを除けば何も役に立ちません。

0

あるいは、コレクションの一部、Item propertyの使用を模倣する:

Check["est"].WithValue("sdsd").IsNotNull() 

いくつかはまた、あなただけの.IsNullを(使用)と、このように、式全体を否定すべきであると言うかもしれないが、それは「6です-vs-半ダース」の事:

!Check["est"].WithValue("sdsd").IsNull() 
+2

私は、コードが何をしているのかを文字通り読むことができるので、IsNotNullメソッドが好きです。 – SolutionYogi

+0

IsNotNull()がブール値を返すことさえ確信できません。 IsNotNull()は、さらにフィルタリングできるコレクション(jQueryスタイル)、... IsNotNull()、IsVisible()...を返す可能性があります。 。 また、これはさらに読みにくいです - 'Check.filters ... IsNull()' – Kobi

+0

したがって、私はいくつかのことを言うかもしれません。 (1)メソッド名は、流暢なインターフェースであってもブール値を返すための規約である "Is"で始まります。すべてが "this"を返すわけではありません。 (2)元の質問はVBではなくC#でタグ付けされていたので、 "Not"を無視して "!"と言いました。 – lavinio

0

別のオプションは、次のようになります。だから、

Check.Field("est").IsNotNull("sdsd") 

LINQのFirstOrDefaultのようなメーリングは、フィルタリングの代わりに述語を呼び出してFirstOrDefaultを呼び出します。

+1

私はこれを考えましたが、誰かがコードについて何も知らず、文字通り "Check.Field(" est ")を見たかどうかは分かりませんでした。IsNotNull(" sdsd ")" vs "Check.Field(" est ").WithValue(" sdsd ")。IsNotNull()"私は、後者がより明確になると思っていたでしょう。 –

+0

コードを知らずに私を混乱させるものは、 "sdsd"という値を持つフィールドがnull(「null値を持つ」という意味で読み込まれる)である可能性があります。 –

0

Checkとは何ですか?私はそれが全く必要ではないと思う。私はあなたが何をしようとしているのか理解していますが、作成しようとしている表現はifステートメントで終わる可能性が高いことに注意してください。そのことを念頭に置いて、もし "check X"がどう読むかについて考えてみてください。あまりにもよく、イホ。さらに、その名前を解決するために「フィールド」機能は何をしなければならないのですか?より良い方法で表現できる別の方法があるでしょうか(おそらく、いくつかの基本型の拡張メソッドでしょうか)

+0

実際に私は次のような場合があります:チェックし、検証してください。チェックは、バリデーションが最後にboolを返すような例外をスローします。だから私はそれが次のようになる方法を考えていた:public void Test(Object value){Check.Argument( "value")。WithValue(value).IsNotNull(); ....}と私の妥当性検査の場合は、次のようになります:public void Test(object value){if(Validate.That( "value")} WithValue(value).IsNotNull()){...}} –

+0

また、手段。実際には、Check.Field&Check.Argumentという2つの可能性があります。違いは、Check.ArgumentがArgumentNullExceptionのような例外をスローする点です。Check.FieldはNullReferenceExceptionをスローします。 –