我最近一直以更具描述性的方式尝试命名抽象类和接口。主要是试图确保它们不偏离其预期目的。接口和抽象类的描述性命名约定
所以对于抽象类我一直用ISA或ISAN接口的ICAN或IPerform
例如,代替IOperationManager; ICanPerformOperationManagement
我发现这看起来更好看课堂。
我敢肯定,我不是第一个这样想,如果有人已经使用接口和抽象类任何一种描述性的命名约定不知道?它会扩展到大型项目,还是只是增加了混乱?
编辑:这个问题太主观了吗?
我最近一直以更具描述性的方式尝试命名抽象类和接口。主要是试图确保它们不偏离其预期目的。接口和抽象类的描述性命名约定
所以对于抽象类我一直用ISA或ISAN接口的ICAN或IPerform
例如,代替IOperationManager; ICanPerformOperationManagement
我发现这看起来更好看课堂。
我敢肯定,我不是第一个这样想,如果有人已经使用接口和抽象类任何一种描述性的命名约定不知道?它会扩展到大型项目,还是只是增加了混乱?
编辑:这个问题太主观了吗?
对于我来说,就是要采取短期和描述,消除了多余的名称术语。
个人不认为有必要包括Can
或接口名称Perform
,因为非常实用摆在首位接口的描述 - 的属性和方法,然后描述什么它应该能够做到。想一想这种方式 - 你会有ICantPerform...
为不类型实现接口?当然不是;界面要么被执行,要么不在那里。
如果开发人员理解接口是什么,那么他们就明白这一点。如果他们不这样做;他们不应该使用接口,直到他们做。
这与抽象类型相同。 IsA
或IsAn
又是多余的,因为只要类型从它继承,关系就完成了。正如安德鲁博士说的那样(+ 1) - Base
后缀是有用的,因为它暗示着那里有抽象的行为要实现(这与BCL的其他部分很好地匹配)。
对我而言,IOperationManager
是有意义的; ICanPerformOperationManagement
笨重。
+1就在你身后 –
Abtract类我倾向于追加基地给它,例如ViewModelBase
或NodeBase
。
对于接口,I倾向于描述对象,所以IOperationManager
而非ICanPerformOperationManagement
。话虽如此,我偶尔会将界面从无聊的IDrawable
更名为更有趣的ICanBeDrawn
请考虑开发者如何使用代码库。如果您正在学习intellisense,并且知道您有一个名为OperationManager
的课程,则您会希望其接口为IOperationManager
。很少人会在第一次尝试猜测,他们应该开始键入I..C..a..n..P..e..
等等
我也倾向于使用BaseViewModel/ViewModelBase,但问题是如果我需要添加另一个类是在那个之上?它会是ViewModelBaseBase还是ActualViewModelBase?所以我只是离开基地并将其称为ViewModel。如果我需要知道某种类型是否抽象,在任何IDE中都很容易 –
@ ToniParviainen在命名课程时需要一小撮盐,也就是“一些明智”,这样做就足够了,你变成了一只手,然后你发现你的团队中有其他人不同意。醇。就个人而言,我会'ViewModelBase',但然后说派生(但仍然是抽象类型)为'SomeSpecificFunctionalityButStillAbstractViewModel'。所有vms必须从'ViewModelBase'继承,但不是全部来自'SomeSpecificFunctionalityButStillAbstractViewModel'。虽然没有正确的方法。总之,只要做些什么 –
我倾向于尝试将接口命名为对象* IS *的描述,并且在您的示例中将使用“IOperationManager”。 – asawyer
也许更适合程序员。 – Nix
“这个问题太主观了吗?“如果你不得不问......它可能是,我认为这也不适合程序员,虽然。 – BoltClock