命名基类的推荐方法是什么?它是否在类型名称前加上“基础”或“抽象”,或者我们只是将其加上“Base”后缀?
请考虑以下事项:
输入:ViewModel
例如 MainViewModel , ReportViewModel
基类:BaseViewModel
或ViewModelBase
或AbstractViewModel
还要考虑:
输入:Product
例如 VirtualProduct , ExpiringProduct
基类:BaseProduct
或ProductBase
或AbstractProduct
您认为哪个更标准?
class Entity : EntityBase
{
}
或
class Entity : BaseEntity
{
}
答案 0 :(得分:78)
框架中有一些带有Base后缀的示例,例如System.Configuration.Provider.ProviderBase
,System.Web.SessionState.SessionStateStoreProviderBase
。
但并非框架中的所有抽象基类都遵循此约定(例如System.Data.Common.DbParameter
,System.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将是更好的选择。