什么时候Java方法名称太长?
在过去的几周里,我看到一些人对一个方法或类使用了很长的名称(50个字符),这通常是在提高可读性的前提下进行的,我的观点是,像这样的长名称表明,如果我们需要这么长的名称,我们在一个方法类中尝试了很多或太多的工作,不过我想知道你们怎么看 例如:什么时候Java方法名称太长?,java,methods,Java,Methods,在过去的几周里,我看到一些人对一个方法或类使用了很长的名称(50个字符),这通常是在提高可读性的前提下进行的,我的观点是,像这样的长名称表明,如果我们需要这么长的名称,我们在一个方法类中尝试了很多或太多的工作,不过我想知道你们怎么看 例如: getNumberOfSkinCareEligibleItemsWithinTransaction 上下文“…WithinTransaction”应该是显而易见的。这就是面向对象的全部内容 该方法是类的一部分。如果类不是“Transaction”的意思——
getNumberOfSkinCareEligibleItemsWithinTransaction
上下文“…WithinTransaction”应该是显而易见的。这就是面向对象的全部内容
该方法是类的一部分。如果类不是“Transaction”的意思——如果它不能使您不必一直说“WithinTransaction”,那么您就有问题了。当存在一个同样传达方法行为的较短名称时,Java或任何其他语言中的名称太长 我的规则如下:如果一个名字太长,以至于它必须出现在自己的一行上,那么它就太长了。(实际上,这意味着我很少超过20个字符。) 这是基于研究表明,代码的可见垂直线的数量与编码速度/效率正相关。如果类/方法名称开始严重影响这一点,那么它们就太长了
在声明方法/类的地方添加一条注释,如果你想详细描述它的用途,让IDE带你去那里。方法本身的长度可能是一个更好的指标,它是否做得太多了,即使这样也只能给你一个粗略的概念。你应该力求简洁,但描述更重要。如果你不能用一个较短的名字来表达相同的意思,那么这个名字本身可能也没问题 与任何其他语言一样:当它不再描述函数执行的单个操作时。当标识符名称超过Java编译器可以处理的长度时,它太长。Java有鼓励长名称的文化,可能是因为IDE具有良好的自动完成功能 表示JRE中最长的类名是
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState
,长92个字符
至于最长的方法名,我发现这一个
支持数据定义和数据操作事务
,它是52个字符。只是为了改变一下,一个非主观的答案:65536个字符
A.java:1:UTF8表示字符串“xxxxxxxxxxxxxxxxxxxxxxxx…”太长
对于恒定池
;-) 减少方法名长度的一些技巧:
SkinCareUtils
,
这将带您进入getNumberOfEligibleItemsWithinTransaction
GetNumberOfEligibleItemsTransaction
getNumberOfEligibleItemsInTx
Transaction
的参数,则可以完全删除InTx:getNumberOfEligibleItems
GetEligibleItemScont
这是非常合理的。它缩短了60%。这里有两种方法或观点:一种是,方法名称的长度实际上并不重要,只要尽可能描述方法正在做什么(Java最佳实践基本规则)。另一方面,我同意flybywire邮报的观点。我们应该使用我们的智能尽量减少方法名称,但不减少其描述性。描述性更重要:)我倾向于用俳句规则来命名:
Seven syllable class names
five for variables
seven for method and other names
以下是max名称的经验法则。只有当它提高可读性时,我才违反这一点。类似于RecreactEmortGageInterest(currentRate,quoteSet…)的东西比RecreactEmortGageInterestRate或RecreactEmortGageInterestFromSet要好,因为它涉及到速率和一组引号,这一事实在javadoc或.NET等嵌入式文档中应该非常清楚
注意:不是真正的俳句,因为它是7-5-7而不是5-7-5。但我还是更喜欢称之为俳句。我想说的是,结合好的答案,并且要合理 完整、清晰、易读地描述该方法的作用
如果方法名称太长,请重构方法以减少工作量。如果名称太长:
- 读取所需时间超过1秒
- 占用的RAM比为JVM分配的要多
- 是一个名字很荒谬的东西吗
- 如果一个较短的名字很有意义
- 如果它环绕在IDE中
老实说,这个名称只需要向开发人员传达它的目的,开发人员将把它作为公共API方法使用,或者在您离开时必须维护代码。请记住KISS(保持简单愚蠢)当方法的名称换行到另一行时太长了,对方法的调用是行中唯一的内容,并且开始时非常接近边距。你必须考虑将要使用它的人的屏幕的平均大小
但是!如果名字看起来太长,那么它可能太长了。解决这个问题的方法是以这样一种方式编写代码:您在一个上下文中,名称很短,但在其他上下文中重复。这就好比你可以用英语说“她”或“他”而不是某人的全名。当一个小单词可以用时,千万不要用长单词。 我认为你的论点“方法名称的长度与方法的长度成正比”并不成立 以您给出的示例为例:“getNumberOfSkinCareEligibleItemsWithinTransaction”。在我看来,这似乎只做了一件事:它计算一个事务中
"The man who is going to maintain your code is a phyco who knows where you stay"
@Test
public void testDialogClosesDownWhenTheRedButtonIsPressedTwice() {
...
}
getTransaction().getItems(SKIN_CARE).getEligible().size()
getTransaction().getItems().stream()
.filter(item -> item.getType() == SKIN_CARE)
.filter(item -> item.isEligible())
.count();