请参阅返回布尔值(无问号)的java方法的命名约定
比较一下我没问的问题。
我的问题涉及从嵌入在容器对象中的委托派生的属性。
尽管所有属性的setter(不管类型如何)都可以轻松方便地以“set”作为前缀(例如setvaluerequired(blah)),但是有各种类型的布尔属性,每个属性的getter通常被命名为{verb}{propertyname}。例如。,
最常见的是存在主义,按惯例前缀是“是”。e、 g.isempty()。
所有格属性,前缀为“has”,例如hasvalue()。
确认必要性,前缀为“requires”,例如requiresresize(),providesresize()。
到目前为止,大多数属性getter都以某种方式转换为存在属性。e、 因此,我的问题只涉及表示(委托类的)存在布尔属性。
假设容器类是printer,它包含类队列。
class Queue {
boolean empty, resettable, resizable;
}
class Printer {
Queue queue;
}
那么,打印机应该如何命名队列的委托属性?因为按照英语理解的惯例,下面的句子很尴尬,因为它们听起来像是在问问题,而不是在肯定它的地位。
isqueueempty()
isqueueresettable()
isqueueresizable()
布尔属性应该是肯定的,听起来不像是在问问题。因此,对于可理解的英语,他们应该
queueisempty()
queueisresettable()
queueisresizable()
或者,也可以是
isemptyqueue()
isresettablequeue()
isresizablequeue()
但是,自动委托方法代码生成器总是生成名称isqueueempty()、isqueueresetable()、isqueueresizeable()。
如果把它放到if中,那就很尴尬了
if (isQueueResettable() && !isQueueEmpty()) resetQueue();
因为这听起来更好
if (isResizableQueue() && !isEmptyQueue()) resetQueue();
~
实际上我的问题
如果有一个jsr推荐属性getter的命名约定?它是什么?当然有,否则不是所有的代码生成器都会带着模棱两可的约定蹒跚而行吗?
如果有,jsr是否有关于委托布尔存在属性getter的建议?
如果不是jsr,至少是apache、jboss、eclipse等中某种形式的rfc?
你不觉得我推荐的约定比代码生成器创建问题获取器更好吗?
2条答案
按热度按时间1yjd4xko1#
方法名应该以动词开头,所以
queueIsEmpty
不应该使用。我找不到任何关于命名约定的文章提到这种特殊情况,但最自然的选择仍然是
isQueueEmpty
.isEmptyQueue
指this
而不是this.queue
. 它将返回“this object is a empty queue”而不是“this object's queue is empty”。oracle还在表单上使用方法名
isQueueEmpty
.下面是中定义的相关方法名称
AbstractButton
,JFrame
,JTable
以及他们的超级班级:isAlwaysOnTopSupported
,isBackgroundSet
,isBorderPainted
,isCellEditable
,isCellSelected
,isColumnSelected
,isContentAreaFilled
,isCursorSet
,isFocusPainted
,isFocusTraversalPolicySet
,isFontSet
,isForegroundSet
,isMaximumSizeSet
,isMinimumSizeSet
,isOptimizedDrawingEnabled
,isPreferredSizeSet
isRequestFocusEnabled
,isRolloverEnabled
,isRootPaneCheckingEnabled
,isRowSelected
bxfogqkk2#
我对jsr了解不多,但我只是想表达我的理解。
你说呢
isResettableQueue()
听起来比isQueueResettable
给你(可能还有很多其他人)。当你分手的时候
isResettableQueue()
进入is
-Resettable
-Queue
,你正在谈论的主要对象(事物)最后进入上下文(在本例中)Queue
).但当你分手的时候
isQueueResettable()
进入is
-Queue
-Resettable
,你正在谈论的主要对象(事物)在早期阶段(至少不是最后阶段)进入上下文。所以你能看出来
Ok now I am talking about Queue for which I am checking if it is empty