当前位置:  开发笔记 > 开发工具 > 正文

抽象类的命名约定

如何解决《抽象类的命名约定》经验,为你挑选了4个好方法。

我清楚地记得,有一次,微软推动的指导原则是将"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

这就是我几秒钟内就可以鼓起来的东西.所以我去查看官方文档说的内容,以确保我没有疯狂.我在开发类库的设计指南中找到了MSDN上的类,结构和接口的名称.奇怪的是,我没有提到在抽象类名称的末尾添加"Base"的指南.该框架的1.1版已不再适用该指南.

那么,我输了吗?该指南是否存在?是不是一言不发就被遗弃了?在过去的两年里,我一直在为自己创造长篇名字吗?

有人在这里给我一个骨头.

更新 我不是疯了.该指南已存在.Krzysztof Cwalina在2005年抱怨它.



1> Iain Holder..:

在框架设计指南中,第174页指出:

如果该类旨在用于公共API,则避免使用"Base"后缀命名基类.

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



2> Joel Coehoor..:

此外,如果抽象类有一些将使用的静态成员,'Base'可能会变得丑陋.



3> Mehrdad Afsh..:

我不记得这样的指导方针.我相信你应该使用有意义的命名.有时抽象类只是为某些类(作为工具)提供通用功能,我认为应该有后缀.但是,在某些情况下,您希望将其用作多态性层次结构的基础,而这种层次结构本身并不完整.在那些情况下,我建议像普通班级一样命名.

如您所见,您可能不会声明一个接受ButtonBase作为参数的方法.它旨在为子类提供最小的功能.但是,您可以将a ConfigurationElement视为具有不同形式的实体,但它本身并不完整(因此它是抽象的)



4> 小智..:

有时Base仍然是必需的,特别是当你提供具体类和抽象类以供某人扩展以创建具体实现时.
例如Controller和ControllerBase(实际上Controller也是抽象的,但提供比ControllerBase更多的功能)

在对接口进行编程时,基本后缀很难看,所以我认为不使用它的Microsoft指南适用于抽象类主要像接口一样使用的情况.可能是Public API的含义.

关键是有些情况下没有更好的替代方法来使用Base后缀.


我同意.我正在使用一个解析来自不同来源的内容的供稿系统.我们在公共API中使用一个名为**IFeedParser**的接口,在内部我们使用一个包含常用功能的基本抽象类,名为**BaseFeedParser**
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有