C#类的命名约定:是BaseClass还是ClassBase或AbstractClass
什么是命名基类的build议方法? 它是前缀types名称与“ 基本 ”或“ 摘要 ”,或者我们只是后缀与“基地”?
考虑以下:
键入: ViewModel
例如MainViewModel , ReportViewModel
基类: BaseViewModel
或ViewModelBase
或AbstractViewModel
还要考虑:
键入: Product
例如VirtualProduct , ExpiringProduct
基类: BaseProduct
或ProductBase
或AbstractProduct
你认为哪个更标准?
class Entity : EntityBase { }
要么
class Entity : BaseEntity { }
框架中有基本后缀的例子,例如System.Configuration.Provider.ProviderBase
, System.Web.SessionState.SessionStateStoreProviderBase
。
但决不是所有框架中的抽象基类遵循这个约定(例如System.Data.Common.DbParameter
, System.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。