Sar*_*els 34 .net extension-methods interface naming-conventions
我通常将我的C#接口命名为IThing.我正在创建一个扩展方法类IThing,但我不知道该命名它.一方面,调用它ThingExtensions似乎意味着它是某个类的扩展Thing类而不是IThing接口.当按字母顺序查看文件时,它还使扩展类与其扩展的接口分开.另一方面,命名它IThingExtensions使它看起来像是一个接口本身,而不是接口的扩展类.你会建议什么?
编辑: 没有一个Thing类实现IThing,以响应一些注释.
Jar*_*Par 30
我绝对喜欢的名字ThingExtensions了IThingExtensions.原因是大多数程序员I对类型的前缀意味着它是一个接口.这是一种非常常见的模式,也是.Net设计指南的一部分.
I为扩展方法案例添加前缀会破坏假设和既定准则.
基类库中也有优先权.大多数可用的扩展方法IEnumerable都包含在类型中Enumerable.
Ree*_*sey 16
我个人会使用IThingExtensions.
从可用性的角度来看,最终用户永远不会看到这个类 - 它们只包含它的命名空间.如果命名空间是相同的IThing,那么无所谓 - 他们已经拥有它.
话虽这么说,我认为其实这些都是扩展任何IThing使IThingExtensions最清晰.如果你有一个Thing类,调用它ThingExtensions可能看起来很模糊(你是扩展接口还是实现本身?).
话虽如此,该框架使用了一种非常不同的方法.框架的方法是使用一个名为Thingextend 的类IThing.有关示例,请参阅Enumerable(extendsIEnumerable)和Queryable(extendsIQueryable).这也是一个非常好的选择.