C#类的命名约定:是BaseClass还是ClassBase或AbstractClass

什么是命名基类的build议方法? 它是前缀types名称与“ 基本 ”或“ 摘要 ”,或者我们只是后缀与“基地”?

考虑以下:

键入: ViewModel例如MainViewModelReportViewModel

基类: BaseViewModelViewModelBaseAbstractViewModel

还要考虑:

键入: Product例如VirtualProductExpiringProduct

基类: BaseProductProductBaseAbstractProduct

你认为哪个更标准?

 class Entity : EntityBase { } 

要么

 class Entity : BaseEntity { } 

框架中有基本后缀的例子,例如System.Configuration.Provider.ProviderBaseSystem.Web.SessionState.SessionStateStoreProviderBase

但决不是所有框架中的抽象基类遵循这个约定(例如System.Data.Common.DbParameterSystem.Data.Common.DbCommand )。

就我个人而言,我会避免使用后缀, 除非我想强调它是一个抽象类,并认为否则该类的用户可能期望名称表示具体的实现。

以上都不是。 考虑你的基类提供了什么目的; 把它命名。 例如,汽车和自行车的基类可以是车辆。

如果你创build基类只是为了拥有一个类的基类,没有其他目的或理由,那么你可能做错了什么。

如果你正在谈论虚拟基类,微软的标准就是ClassnameBase(就像CollectionBase一样)。

我们使用BaseEntity,但我认为它是你自己的偏好。 我经常看到另一个。

只要在你的上下文中保持一致,就是你的项目,命名空间或者如果可能的话,你的团队。 不同的惯例比糟糕的惯例恕我直言,更糟糕。

我认为它是一个select的问题。 我想说,如果你正在创build许多基类,那么或许最好总是使用BaseClassname,因为这样你总是可以通过键入Base并从其他帮助中find你可以开始使用的基类智能感知。 如果你有20个基类,而你添加了Base作为后缀,你忘记了什么是基类的名字? 你想首先从VS创build一个类图,并找出哪些基类可用? 当它只是一个或两个类时,将它们命名为ClassBase是可以的。

GetItems和ItemsGet函数之间的决定也是一样的。 为了可读性,至less要说GetItems。 按照惯例:)

就个人而言,我build议不要添加基本单词。 你永远不知道什么时候你必须改变代码,它不会再是基础对象。 这就是说,过去我们已经这样做了,我们在前面加上了前缀Base这个词。 它似乎stream动更好。

BaseEntity看起来很像骆驼案例 – strName,bseEntity。 我会去EntityBase,因为它首先定义了主题,这将帮助您更快地识别它的function。

当你命名的东西时总是想到字母顺序。 我真的不喜欢看一个SQL服务器,每个存储过程被命名为usp [something]。 沿着同样的路线,不要过分使用Get和Set作为函数的名字。 考虑将它们命名为ItemsGet或OrderPlace,而不是GetItems或PlaceOrder。

所以,一般来说,ClassnameBase / EntityBase会是更好的select。