我经常遇到一个由接口或类表示的概念,然后我有一系列扩展它的子类/子接口.
例如:通用"DoiGraphNode"表示资源的"DoiGraphNode"表示Java资源的"DoiGraphNode"具有相关路径的"DoiGraphNode"等.
我可以想到三个命名约定,并希望评论如何选择.
选项1:始终以概念的名称开头.
因此:DoiGraphNode,DoiGraphNodeResource,DoiGraphNodeJavaResource,DoiGraphNodeWithPath等.
亲:很清楚我在处理什么,很容易看到我的所有选项
骗局:不是很自然?一切看起来都一样吗?
选项2:将特殊内容放在开头.
因此:DoiGraphNode,ResourceDoiGraphNode,JavaResourceDoiGraphNode,PathBaseDoiGraphNode等等.
亲:我在代码中看到的很清楚
Con:发现它可能很困难,特别是如果我不记得名字,缺乏视觉一致性
选项3:放入特殊内容并删除一些冗余文本
因此:DoiGraphNode,ResourceNode,JavaResourceNode,GraphNodeWithPath
Pro:没有那么多写和读Con:看起来像cr*p,非常不一致,可能与其他名称冲突
使用你喜欢的任何东西,这是一个主观的东西.重要的是要弄清楚每个类代表什么,名称应该是继承关系有意义的.我不认为编码名称中的关系是非常重要的; 这就是文档的用途(如果你的名字适合于对象,人们应该能够很好地猜测从什么继承的东西).
对于它的价值,我通常使用选项3,根据我的经验,查看其他人的代码选项2可能比选项1更普遍.
根据它们的名称命名它们.
如果命名它们很难或含糊不清,那通常表明班级做得太多(单一责任原则).
要避免命名冲突,请适当选择命名空间.
个人而言,我会用3