抽象类命名规范

85

我们应该有一个团队编码规范,抽象类的名称应该有前缀Abstract吗?例如:

public abstract class AbstractB implements B {}

9
我打赌这个问题会被关闭,因为它非常主观。不过我投赞成票。 - Ryan Stewart
8
@bstick:不要!接口就是类型。给它们起本来的名字! - Ryan Stewart
1
@Ryan Stewart 我只是有点开玩笑。 - bstick12
1
@bstick:是啊,总会有人认真对待你的:p - Ryan Stewart
1
我认为这不是主观的。 - Paul McKenzie
显示剩余4条评论
6个回答

101

实际上,如果您查看标准库的Java文档,位于 http://download.oracle.com/javase/6/docs/api/ 的左下角的类列表将以您在问题中提到的命名约定命名的抽象类开头。

AbstractAction
AbstractAnnotationValueVisitor6
AbstractBorder
AbstractButton
AbstractCellEditor
AbstractCollection
AbstractColorChooserPanel
AbstractDocument
AbstractDocument.AttributeContext
AbstractDocument.Content
AbstractDocument.ElementEdit
AbstractElementVisitor6
AbstractExecutorService
AbstractInterruptibleChannel
AbstractLayoutCache
AbstractLayoutCache.NodeDimensions
AbstractList
AbstractListModel
AbstractMap
AbstractMap.SimpleEntry
AbstractMap.SimpleImmutableEntry
AbstractMarshallerImpl
AbstractMethodError
AbstractOwnableSynchronizer
AbstractPreferences
AbstractProcessor
AbstractQueue
AbstractQueuedLongSynchronizer
AbstractQueuedSynchronizer
AbstractScriptEngine
AbstractSelectableChannel
AbstractSelectionKey
AbstractSelector
AbstractSequentialList
AbstractSet
AbstractSpinnerModel
AbstractTableModel
AbstractTypeVisitor6
AbstractUndoableEdit
AbstractUnmarshallerImpl
AbstractWriter

选择其中任意一个,比如第一个,查看它的定义:AbstractAction。它确实实现了 Action 接口,这也与您的约定相似。其子类的命名方式类似于:ClosedActionMaximizeAction等。


3
反例:java.util.Calendar - KGhatak
@ Susam Pal - 所以,没有实现接口的抽象类应该以“Abstract”开头!注意:Calander是一个抽象类。 - KGhatak
1
我不确定这里是否适用于“AbstractMethodError”。 - secondbreakfast

12

通常,团队合作中任何类型的标准都是一件好事。 否则,团队成员可能会以只有他们能理解的方式命名类,导致不同编码风格混杂而引起混乱。


这正是我想的。我更喜欢用“Abstract”前缀来命名它们,但最重要的是遵循团队/项目的编码风格。 - Gábor Csikós

5

为了可读性,这听起来是个好主意。在阅读代码时,您将立即知道类是什么。只要每个人都遵循标准,就很好。


4

我不想在答案中表态,但无论你选择什么,都要使用好的静态分析工具来确保它。


3
现代集成开发环境会在你悬停在对象上时弹出描述性文本,此时前缀是多余的。

3
这需要使用Javadocs,这又是一个让团队为编码风格而战的完全不同的事情。 - Paul McKenzie

2

和大多数这类问题一样:“视情况而定”。我喜欢保持一致性和清晰度,所以如果这对您和您的店铺有效,那很好。但是,如果您有遗留的抽象类,则需要返回并将它们重构为相同的命名约定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接