Java接口,AbstractClass和Enum命名约定

rou*_*sis 30 java naming-conventions

我们在团队中讨论了Java的代码约定:

  • interface:FooIFooFooInterface

  • abstract:FooAbstractFoo

  • Enums:FooFooEnum

我基本上试图把我的个人偏好放在一边:)所以非常欢迎支持一个或其他惯例的理由.

Jon*_*eet 29

在Java中:Foo,AbstractFooFoo-虽然AbstractFoo可能仅仅是Foo.

证据:

  • java.util.List (接口)
  • java.util.AbstractList (抽象类)
  • java.util.Formatter.BigDecimalLayoutForm (枚举)

有关接口部分,请参阅Java编码约定文档的命名约定部分.它不讨论枚举和抽象类.


jrh*_*ath 18

接口:Foo

原因:您的代码不必知道他们正在处理接口.写'IFoo'就是这么做的.相反,Foo清楚地表明'Foo'是通用的,它背后的对象可能是'NumFoo'或'StrFoo'.代码真的不需要关心.

抽象类:AbstractFoo

原因:您的代码永远不会直接使用此类.您将始终将此类子类化以生成其他代码使用的任何类.因此,程序员必须清楚地知道该类是抽象类.有什么更好的方法来命名它抽象!您需要使用AbstractFoo类型的引用的地方,您应该重新考虑使用接口.(当然,这在C++中是不可能的)

枚举:FooType或FooEnum.就个人而言,FooType更好,因为Type更容易与Enum所做的"真实世界"相关.

干杯!


Jod*_*hen 18

来自我的博客:

  • Foo - 界面最终定义了概念,所以它应该有最好的名字.
  • AbstractFoo - 一种抽象实现,旨在用作类层次结构的基础.
  • BaseFoo - 一种实现,旨在用作类层次结构的基础,如果需要,可以单独使用基类.
  • DefaultFoo - 适用于大多数典型用例的"默认"实现.
  • SimpleFoo - 一个没有意外功能的"简单"实现,可能作为示例或模拟.一个简单的POJO将是一个很好的"简单"实现.
  • {Descriptive} Foo - 其他实现应描述使它们独特的原因.

该博客还讨论了一些其他名称的原因.


Mic*_*rdt 5

没有特别的约定.

对这些类具有特殊的命名约定基本上是匈牙利符号的形式(坏的类型):它给出的信息已经存在于语法中,并且通常可以由IDE轻松获得,例如当您将鼠标悬停在名称上时.将它放入名称本身是毫无意义和丑陋的.

类名应该简单地描述类的角色.这可以导致"自然"的命名约定 - 一个非常好的例子是使用-able后缀(Iterable,Comparable)命名接口的Java约定 - 但我不想想如果它是普遍强制执行的结果和List,地图等必须遵循它.

  • Java的一个例子:Map是界面,然后是AbstractMap,HashMap,TreeMap,LinkedHashMap等...... (2认同)