126

命名基类的推荐方法是什么?是用“ Base ”或“ Abstract ”作为类型名称的前缀还是我们只是用“Base”作为后缀?

考虑以下:

类型:ViewModel例如MainViewModelReportViewModel

基类:BaseViewModelViewModelBaseAbstractViewModel

还要考虑:

类型:Product例如VirtualProduct , ExpiringProduct

基类:BaseProductProductBaseAbstractProduct

你觉得哪个更标准?

class Entity : EntityBase
{
}

或者

class Entity : BaseEntity
{
}
4

8 回答 8

96

框架中有一些带有 Base 后缀的示例,System.Configuration.Provider.ProviderBase例如System.Web.SessionState.SessionStateStoreProviderBase.

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

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

于 2009-05-05T20:48:50.530 回答
48

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

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

于 2009-05-05T20:44:02.927 回答
6

如果您在谈论虚拟基类,Microsoft 的标准是 ClassnameBase(如 CollectionBase。)

于 2009-05-05T20:57:27.590 回答
3

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

只要在您的上下文中保持一致,无论是您的项目、命名空间还是您的团队(如果可能)。恕我直言,不同的约定比糟糕的约定更糟糕。

于 2009-05-05T20:44:12.973 回答
3

我认为这是一个选择问题。我会说,如果您要创建很多基类,那么最好始终使用 BaseClassname,因为这样您总是可以通过键入 Base 并获得其余帮助来找出可以开始使用的基类智能感知。如果你有 20 个 Base 类并且你添加 Base 作为后缀,你忘记了基类的名称是什么?您想先从 VS 创建一个类图并找出可用的基类吗?当只有一两个类时,可以将它们命名为 ClassBase。

GetItems 和 ItemsGet 函数之间的决定也是如此。我会说至少为了可读性 - 去 GetItems。遵守约定:)

于 2009-06-09T14:45:06.663 回答
2

就个人而言,我建议完全不要添加词库。您永远不知道何时必须更改代码,并且它不再是基础对象。话虽如此,我们过去也这样做过,我们在前面加上了 Base 这个词。它似乎流动得更好。

于 2009-05-05T20:45:17.167 回答
-1

BaseEntity 看起来很像驼峰式案例 - strName、bseEntity。我会选择 EntityBase,因为它首先定义了主题,这将帮助您更快地识别它的功能。

于 2009-05-05T20:53:00.520 回答
-6

当你命名东西时,总是考虑按字母顺序排列。我真的不喜欢查看 SQL 服务器,并且每个存储过程都被命名为 usp[something]。同样,不要过度使用 Get 和 Set 作为函数的前导名称。考虑将它们命名为 ItemsGet 或 OrderPlace,而不是 GetItems 或 PlaceOrder。

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

于 2009-05-05T21:33:52.667 回答