委托布尔存在性getter的java命名约定

i2byvkas  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(308)

请参阅返回布尔值(无问号)的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?
你不觉得我推荐的约定比代码生成器创建问题获取器更好吗?

1yjd4xko

1yjd4xko1#

方法名应该以动词开头,所以 queueIsEmpty 不应该使用。
我找不到任何关于命名约定的文章提到这种特殊情况,但最自然的选择仍然是 isQueueEmpty . isEmptyQueuethis 而不是 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

bxfogqkk

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

相关问题