接口的描述性命名约定&;抽象类

本文关键字:amp 抽象类 命名约定 描述性 接口 | 更新日期: 2023-09-27 18:21:04

我最近一直在尝试以更具描述性的方式命名抽象类和接口。主要是为了确保它们不会偏离预期目的。

因此,对于抽象类,我一直在为接口ICanIPerform使用IsA

例如,代替IOperationManager;ICanPerformOperationManagement

我发现这个在上课时读起来更好。

我确信我不是第一个这样想的人,我想知道是否有人对接口和抽象类使用过任何描述性命名约定?它会扩展到大型项目,还是只是增加了混乱?

编辑:这个问题太主观了吗!?

接口的描述性命名约定&;抽象类

对我来说,这是关于简短和描述性的,消除名称中多余的术语。

就我个人而言,没有必要在接口名称中包含CanPerform,因为接口的使用首先描述了这一点-属性和方法然后描述了它应该能做什么。这样想吧-对于没有实现接口的类型,你会有ICantPerform...吗?当然不是;接口要么已经实现,要么一开始就不存在。

如果开发人员了解什么是接口,那么他们就会理解这一点。如果他们不这样做;他们不应该使用接口,除非他们这样做。

抽象类型也是如此。IsAIsAn也是多余的,因为只要一个类型从中继承,关系就完成了。正如Andrew博士所说(+1),Base后缀很有用,因为它意味着有抽象的行为需要实现(这也很适合BCL的其余部分)。

对我来说,IOperationManager是有意义的;ICanPerformOperationManagement很笨重。

我倾向于将Base附加到Abtract类中,例如ViewModelBaseNodeBase

对于接口,我倾向于描述对象,因此IOperationManagerICanPerformOperationManagement相对。话虽如此,我偶尔会将一个界面从相当无聊的IDrawable重命名为更有趣的ICanBeDrawn

考虑一下开发人员将如何使用代码库。如果您正在绑定intelligense,并且知道您有一个名为OperationManager的类,那么您会期望它的接口是IOperationManager。很少有人会在第一次尝试时猜测他们应该开始键入I..C..a..n..P..e..等…