哪个更流畅 - 更长或更短的语法?

时间:2009-07-14 02:27:07

标签: c# .net fluent-interface

我正在尝试创建我的第一个流畅的界面,我只是想知道其他人认为哪些更流畅,哪个更喜欢使用?

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

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

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

干杯 安东尼

5 个答案:

答案 0 :(得分:4)

最后一个肯定:

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

答案 1 :(得分:3)

我同意:

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

尽可能短,但仍然有意义。

避免像.as. .of. .and. .in.这样的干扰词,除非它们添加了上下文含义。我已经看到了这样做的流畅的接口,除了更多的输入和更多的箍以使应用程序在执行时跳过,它没有任何用处。

答案 2 :(得分:0)

或者,为了模仿某些集合,请使用Item property

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

有些人可能会说你应该只使用.IsNull()并否定整个表达式,就像这样,但那是“六 - 六 - 六”的事情:

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

答案 3 :(得分:0)

另一种选择可能是:

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

LINQ的FirstOrDefault调用谓词而不是过滤,然后调用FirstOrDefault。

答案 4 :(得分:0)

什么是Check?我怀疑它根本不需要。我理解你要做的是什么,但请记住,你试图构建的表达式仍然可能最终出现在if语句中。考虑到这一点,请考虑“如果检查X”如何读取。不太好,imho。此外,'Field'功能必须做什么才能解析该名称?你有没有其他你可以以更好的方式呈现的地方(可能是一些基类型的扩展方法?)