public static class Th
{
public static T e<T>(T theObject) where T : class
{
return theObject;
}
}
public static class ObjectExtensions
{
public static bool Is<T>(this T o, Func<T, bool> a) where T : class
{
return a(o);
}
}
//...
//logic in a method somewhere
Func<string, bool> valid = property => _myService.SomeValidationMethod(property);
if (Th.e(_request.Property).Is(valid))
{
//do something
}
这段代码是否适合制作?为什么?
修改:感谢您的所有意见。我希望你阅读我对C#语法的延伸,以及阅读你的回答时的突破点。
答案 0 :(得分:5)
我对流畅的API没有任何问题,但这似乎违反了最少惊喜的原则。我不理解名为Th
的类的目的,也不了解名为e
的方法。
答案 1 :(得分:2)
是什么让你觉得这段代码“流利”?
这绝对不是流利的,也不是自我记录。
答案 2 :(得分:2)
太过分了。不,代码不适合生产。 Th.e
既没有正确的措辞散文也没有恰当命名的代码 - 在两种语境中都没有意义。
答案 3 :(得分:1)
虽然你所谓的“流畅性”非常重要,而且大多数开发人员都缺少这一点(即使谁应该真正关心这一点,比如CS算法编写者),你向我们展示的代码风格是滥用语言的表达能力而不是非常有用的,IMO,有两个原因:
if (_request.Property.Is(valid))
类和Th
方法,Th.e
也会“流畅”; if (Th.e(_request.Property2).Is(valid))
还是if (Th.e(_request2.Property).Is(valid))
?如果您需要进行另一项测试怎么办?你做if (Th.e(_request.Property).Is(valid2))
?