接口的描述性命名约定&;抽象类
本文关键字:amp 抽象类 命名约定 描述性 接口 | 更新日期: 2023-09-27 18:21:04
我最近一直在尝试以更具描述性的方式命名抽象类和接口。主要是为了确保它们不会偏离预期目的。
因此,对于抽象类,我一直在为接口ICan或IPerform使用IsA
例如,代替IOperationManager;ICanPerformOperationManagement
我发现这个在上课时读起来更好。
我确信我不是第一个这样想的人,我想知道是否有人对接口和抽象类使用过任何描述性命名约定?它会扩展到大型项目,还是只是增加了混乱?
编辑:这个问题太主观了吗!?
对我来说,这是关于简短和描述性的,消除名称中多余的术语。
就我个人而言,没有必要在接口名称中包含Can
或Perform
,因为接口的使用首先描述了这一点-属性和方法然后描述了它应该能做什么。这样想吧-对于没有实现接口的类型,你会有ICantPerform...
吗?当然不是;接口要么已经实现,要么一开始就不存在。
如果开发人员了解什么是接口,那么他们就会理解这一点。如果他们不这样做;他们不应该使用接口,除非他们这样做。
抽象类型也是如此。IsA
或IsAn
也是多余的,因为只要一个类型从中继承,关系就完成了。正如Andrew博士所说(+1),Base
后缀很有用,因为它意味着有抽象的行为需要实现(这也很适合BCL的其余部分)。
对我来说,IOperationManager
是有意义的;ICanPerformOperationManagement
很笨重。
我倾向于将Base附加到Abtract类中,例如ViewModelBase
或NodeBase
。
对于接口,我倾向于描述对象,因此IOperationManager
与ICanPerformOperationManagement
相对。话虽如此,我偶尔会将一个界面从相当无聊的IDrawable
重命名为更有趣的ICanBeDrawn
考虑一下开发人员将如何使用代码库。如果您正在绑定intelligense,并且知道您有一个名为OperationManager
的类,那么您会期望它的接口是IOperationManager
。很少有人会在第一次尝试时猜测他们应该开始键入I..C..a..n..P..e..
等…