将-Ex添加到.Net中的类型名称

Eri*_*res 10 .net c# naming-conventions

我最近在工作代码库中注意到了一种模式,我们的大多数模型类都有一个名称,如User,并且有一个继承类型,其上有额外的字段,称为UserEx.我也注意到了这一点在C#异步CTP,他们把更多的静态方法工作在一个名为TaskEx类(由于技术的限制,因为他们无法改变现有的库).在工作中与某人交谈时,我了解到-Ex类存在以优化网络传输(如果需要,您可以只提取最低限度).那么,我的问题是-Ex代表什么?我能想到的唯一可能就是"额外".

Cod*_*ray 20

其他答案都是正确的:Ex后缀代表"扩展".这是一种引入新类或方法而不过时或删除旧类的方法,这是在引入新功能时保持向后兼容性的常用方法.

在Windows API做这一切的地方,如解释在这里.

汉斯在他的解释中暗示了这种方法的问题:它没有扩展.如果要扩展"扩展"功能怎么办?你叫它FunctionExEx吗?这看起来很愚蠢.

事实上,愚蠢的是,微软自己的.NET编码指南(尽管它们是主观的)特别建议不要附加Ex到类型.相反,如果你必须这样做,你应该使用一个数字:

MyType
MyType2   // modified version
MyType3   // oh wait, we had to modify it again!
Run Code Online (Sandbox Code Playgroud)

把这个归咎于糟糕的计划作为试图做的事情是有点为时过早.当写现实世界的应用和框架,您经常需要出货.这意味着获得了该功能的快速和肮脏的版本工作.后来,你认为这是一个糟糕的设计,需要改变一些东西.你引入了一个具有不同名称的新类型,而不是抛弃你的手并完全重写(产生巨大的延迟并废弃所有旧代码).后见之明总是20/20.


use*_*116 5

结束新的类或方法或输入Ex是一种命名约定,并且像任何命名约定一样,它受制于实现它的人的想法.

没有硬性和快速的规则,并且它不比追加2到类的末尾(或Extra,或More,或DidntWantToMessWithThePublicApi)更正确或更不正确.

至于使用它的原因,微软长期以来一直使用它来提供对现有API的修订而不破坏旧代码.您可以在类,方法结构中找到此示例.您还可以找到不同的示例,而不是使用它们2.