命名子类的最佳实践

Uri*_*Uri 12 oop naming hierarchy

我经常遇到一个由接口或类表示的概念,然后我有一系列扩展它的子类/子接口.

例如:通用"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,非常不一致,可能与其他名称冲突

Dav*_*d Z 5

使用你喜欢的任何东西,这是一个主观的东西.重要的是要弄清楚每个类代表什么,名称应该是继承关系有意义的.我不认为编码名称中的关系是非常重要的; 这就是文档的用途(如果你的名字适合于对象,人们应该能够很好地猜测从什么继承的东西).

对于它的价值,我通常使用选项3,根据我的经验,查看其他人的代码选项2可能比选项1更普遍.


Mit*_*eat 5

根据它们的名称命名它们.

如果命名它们很难或含糊不清,那通常表明班级做得太多(单一责任原则).

要避免命名冲突,请适当选择命名空间.

个人而言,我会用3

  • 我也选择了第三个选项。在前两个中,存在以“曲折的长名称的迷宫,都略有不同”结尾的危险,在这种情况下,您很难阅读它们,甚至很难记住哪个名称对应于哪个概念。 (2认同)