如何命名子类?

时间:2019-06-03 05:36:47

标签: oop naming-conventions

早上好

我将拥有许多子类,子类的子类,等等。 如何正确命名它们以避免命名混乱并使它们保持一致?

我的意思是,我可以这样做:

  • 动物-> LargeAnimal-> LargeAnimalFromMeat
  • 动物-> LargeAnimal-> SimplifiedLargeAnimal

即现在,子类是可读的,但是没有一致性,因此当您看到一个未知类时,必须阅读其所有名称以了解其用途。

我也可以这样命名:

  • 动物-> LargeAnimal-> LargeAnimalMeat
  • 动物-> LargeAnimal-> LargeAnimalSimplified

它更好,但现在更难读了。可能会有类似“ LargeAnimalRed”的类而不是“ RedLargeAnimal”的类,它们更具可读性。

所以我看到第三个选项:

  • 动物->动物大->动物大肉
  • 动物->动物大-> Animal_Large_Simplified
  • 动物->动物大->动物大红色

现在它们具有“名称+组+修改”,即您可以看到所有选项,不需要确定什么是什么,但是我没有看到这样的命名约定。

您如何看待这个问题和示例?

第三个变体在社区中可以接受吗?

1 个答案:

答案 0 :(得分:0)

  

您如何看待这个问题和示例?

您花了很多时间问这个事实,这很好,您提供的示例也很容易理解。

  

第三个变体在社区中可以接受吗?

不。每种语言都有自己的编码和命名标准。在这种情况下,我不知道具有This_Convention的任何语言。 如果您使用的是Java,则通常应使用PascalCase。

根据您的问题,我想说的是,如果一个类不能轻易命名,则可能暗示了一些糟糕的设计决策。

  1. LargeAnimal和SmallAnimal是否真的具有使它们在逻辑上可分离的不同属性?所有大型动物都共享所有小型动物都没有的相同方法/领域吗?

  2. 类和对象(通常)表示现实生活中的概念和对象。 如果您有Bar类的实例foo,则应该可以轻松地说出“ foo是Bar的(类型)”。

您能说“ foo是LargeAnimalMeat”吗?

最后,我认为您应该重新考虑这些名称,如果您不熟悉“合成”的概念,建议您阅读一下它,因为在许多情况下,它是一种更合适的解决方案,而不是继承。

https://en.wikipedia.org/wiki/Composition_over_inheritance