Java中的长变量/方法名有什么固有的错误吗?

Java中的长变量/方法名有什么固有的错误吗?,java,Java,可能重复: 我知道这可能是个人意见的问题,但我想知道什么是标准做法,什么是不赞成的 例如,我在大学的一位教授似乎总是尽可能缩短他的变量和方法名(getAmt()而不是getAmount) 我不反对这一点,但就我个人而言,如果它增加了描述性,那么我更愿意让我的书多放一点,这样阅读它的人就不必检查或参考文档 例如,我们制作了一个方法,给出一个球员列表,返回得分最多的球员。我使用的方法是getPlayerWithMostGoals(),这是错误的吗?我费了好大劲才选择了一种短一点的方法,但后来我想“

可能重复:

我知道这可能是个人意见的问题,但我想知道什么是标准做法,什么是不赞成的

例如,我在大学的一位教授似乎总是尽可能缩短他的变量和方法名(getAmt()而不是getAmount)

我不反对这一点,但就我个人而言,如果它增加了描述性,那么我更愿意让我的书多放一点,这样阅读它的人就不必检查或参考文档

例如,我们制作了一个方法,给出一个球员列表,返回得分最多的球员。我使用的方法是
getPlayerWithMostGoals()
,这是错误的吗?我费了好大劲才选择了一种短一点的方法,但后来我想“为什么?”。它清楚地表达了这一点,Eclipse使我在键入时能够轻松地自动完成它


我只是想知道短变量名是否已经过时了,因为需要尽可能地小以提高效率。这仍然是一个要求吗?

我更喜欢使用长的变量/方法名称来描述正在发生的事情。在您的情况下,我认为getPlayerWithMostGoals()是合适的。当我看到一个像“amt”这样的短变量名时,我感到很困扰,我不得不在脑海中将它转换成“amount”。

类似于
getAmt()
的东西看起来像
C++
代码样式。。。在java中,通常使用更具描述性的名称


你的教授提出了一个很好的理解方法。但这是一个非常流行的词。这不是一般情况。使用您的“longWordStyle”样式,它更像java。

根据标准,建议使用更长的描述性名称,以使其更易于长期阅读和维护。如果您使用非常短的命名,例如将变量命名为
a
,您会忘记自己,忘记该变量的含义。在更大的项目中,这会变得更麻烦。虽然我不认为使用
getAmt()
代替
getAmount()
有什么问题,但显然
getPlayerWithMostGoals()
getPlayer()

长名和短名更好,这一切都取决于具体情况。有很多方法和讨论,但实际上方法的名称应该反映其意图。这有助于您进一步理解代码。就拿这个例子来说

public void print(String s)
漂亮的名字,简短,简洁。。。不是吗?事实上,如果没有文档可以告诉你“打印”是什么意思,那就没有了。我说,
System.our.println
是一种打印字符串的方法,但您可以将打印定义为将字符串保存在文件中或在对话框中显示

public void printInConsole(String s)
现在没有误解了。大多数人可以告诉你,你可以阅读该方法的JavaDoc来理解它,但是。。。你是否打算读一整段来决定你将要使用的方法是否符合你的需要

在我看来,方法至少应该描述一个行为和一个实体(如果它们与一个实体相关)。“长”也是一种感觉。。。但是很长的名称使得代码很难结构化。这是一个获得适当平衡的问题


根据经验,我会避免删节,并使用JavaDoc进一步描述方法的意图。描述性名称可以很长,但回报是可读性和自我解释代码。

没有本质上的错误,最好是描述性的,而不是晦涩的。然而,对于一个试图做得太多或可能被重构的方法来说,它通常是代码味道

错误:
getActInfPstWeek

确定:
getAccountInformationForPastWeek()


更好的
getAccountInformation(DateRange范围)

您只需权衡可读性和键入名称所需时间之间的差异。。。做出选择。总的来说,我看到了一种趋势,即更少的注释和更长的“自我注释”变量和方法名称。我的教授过去常常在白板上为System.out.println()编写sop(),因为他知道他不会编译它!他们通常用简写的形式写东西。。但我觉得在项目中,对类变量和方法有一个清晰的名称总是很好的。我不介意为局部变量编写I、foo等,如果它们的目的只是为了循环或一个小任务。
boolean是LongVariableMethodNamesinJava()
@PeterLawrey
{return false;}
很好,这就是我希望听到的。谢谢。我确实看到了一个名为FindDistributorsWithFamilySubProductInfoByLocationQuery()的方法,我很喜欢它。。