.net - 抽象类的命名约定

标签 .net naming-conventions abstract-class

我清楚地记得,曾经,微软推行的指导方针是在抽象类中添加“Base”后缀,以消除它是抽象的事实。因此,我们有诸如 System.Web.Hosting.VirtualFileBase 、 System.Configuration.ConfigurationValidatorBase 、 System.Windows.Forms.ButtonBase 等类当然,System.Collections.CollectionBase

但我注意到,最近框架中的许多抽象类似乎没有遵循这个约定。例如,以下类都是抽象类,但不遵循此约定:

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

这就是我在几秒钟内就能鼓动的内容。所以我去查找官方文档的内容,以确保我没有疯。我找到了Names of Classes, Structs, and Interfaces在 MSDN 上:Design Guidelines for Developing Class Libraries 。奇怪的是,我找不到任何提及在抽象类名称末尾添加“Base”的指南。该指南不再适用于框架 1.1 版本。

那么,我会失去它吗?这个指导方针曾经存在过吗?难道就这样一声不吭地被抛弃了吗?过去两年我自己创建长类名是否毫无意义?

有人在这里扔了我一根骨头。

更新 我没疯。指导方针是存在的。 Krzysztof Cwalina gripes about it in 2005.

最佳答案

Framework Design Guidelines第 174 页指出:

Avoid naming base classes with a "Base" suffix if the class is intended for use in public APIs.

另外:http://blogs.msdn.com/kcwalina/archive/2005/12/16/BaseSuffix.aspx

关于.net - 抽象类的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429470/

相关文章:

c# - MemoryPool<T> 和 ArrayPool<T> 的区别

HTML5 标签名称约定 - 自定义标签和破折号的使用

抽象类的C++工厂方法模式

c# - 为什么不能创建抽象类实例但可以调用其构造函数?

c# - 如何定义继承泛型抽象类的泛型抽象类?

c# - 仅使用 ToString 将字节转换为两位十六进制数?

c# - Math.Pow() 如何在 .NET Framework 中实现?

c# - 在 C# 中,为什么 List<string> 对象不能存储在 List<object> 变量中

Java 代码约定 : Using 'default' as a variable name

opengl - glsl 输出和输入的命名约定