C#类命名约定:是基类还是类基类或抽象类

时间:2009-05-05 20:39:42

标签: c# naming-conventions base-class

命名基类的推荐方法是什么?它是否在类型名称前加上“基础”或“抽象”,或者我们只是将其加上“Base”后缀?

请考虑以下事项:

输入:ViewModel例如 MainViewModel ReportViewModel

基类:BaseViewModelViewModelBaseAbstractViewModel

还要考虑:

输入:Product例如 VirtualProduct ExpiringProduct

基类:BaseProductProductBaseAbstractProduct

您认为哪个更标准?

class Entity : EntityBase
{
}

class Entity : BaseEntity
{
}

8 个答案:

答案 0 :(得分:78)

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

但并非框架中的所有抽象基类都遵循此约定(例如System.Data.Common.DbParameterSystem.Data.Common.DbCommand)。

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

答案 1 :(得分:40)

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

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

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

在您的环境中保持一致,无论是您的项目,命名空间还是可能的团队。不同的约定比糟糕的惯例恕我直言。

答案 4 :(得分:2)

就个人而言,我建议不要添加单词base。你永远不知道什么时候你必须改变代码,它将不再是基础对象。话虽这么说,我们过去做过这个,我们在前面加上了Base这个词。它似乎流动得更好。

答案 5 :(得分:2)

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

GetItems和ItemsGet函数之间的决定同样如此。为了便于阅读,我会说 - 至于GetItems。遵循惯例:)

答案 6 :(得分:-1)

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

答案 7 :(得分:-4)

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

因此,通常,ClassnameBase / EntityBase将是更好的选择。