2

可能重复:
Java 方法名称何时过长?

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

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

我对此没有异议,但就个人而言,如果它增加了描述性,我更喜欢我的时间更长一点,这样阅读它的人就不必检查或参考文档。

例如,我们创建了一个给定球员列表的方法,返回进球最多的球员。我做了这个方法getPlayerWithMostGoals(),这是错的吗?我辛辛苦苦地选择了一种让它变短的方法,但后来我想“为什么?”。它清楚地表达了这一点,并且 Eclipse 可以在我键入时轻松自动完成它。

我只是想知道短变量名是否已成为过去,因为需要所有内容都尽可能小以提高效率。这仍然是一个要求吗?

4

5 回答 5

13

本质上没有错,最好是描述性的而不是神秘的。但是,对于尝试做太多事情或可以重构的方法来说,这通常是代码异味

坏的:getActInfPstWeek

好的:getAccountInformationForPastWeek()

更好的getAccountInformation(DateRange range)

于 2012-10-07T03:39:12.840 回答
8

我更喜欢长变量/方法名称来描述正在发生的事情。在您的情况下,我认为 getPlayerWithMostGoals() 是合适的。当我看到像“amt”这样的短变量名时,这让我很困扰,我必须将其转置在我的脑海中(转换为“数量”)。

于 2012-10-07T03:29:43.250 回答
0

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

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

于 2012-10-07T03:36:00.700 回答
0

根据标准,建议使用较长的描述性名称,以使其在长期内更具可读性和可维护性。如果您使用非常简短的命名,例如变量 as a,您将忘记自己,一段时间后该变量的含义。这在更大的程序中变得更加成问题。虽然我没有看到使用getAmt()代替的问题getAmount(),但绝对getPlayerWithMostGoals()比类似的更可取getPlayer()

于 2012-10-07T03:36:05.473 回答
0

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

public void print(String s)

漂亮的名字,简短,简洁......不是吗?好吧,实际上没有,如果没有文档告诉您“打印”是什么意思。我说System.our.println的是一种打印字符串的方式,但您可以将打印定义为将字符串保存在文件中或在对话框中显示。

public void printInConsole(String s)

现在没有任何误解。大多数人可以告诉您,您可以阅读该方法的 JavaDoc 来理解它,但是......您是否要阅读完整的段落来确定您要使用的方法是否满足您的需求?

IMO,方法应该至少描述一个动作和一个实体(如果它们与一个相关)。“长”也是一种看法……但真正长的名称会使代码难以结构化。这是一个获得适当平衡的问题。

根据经验,我会取消缩写并使用 JavaDoc 来进一步描述方法的意图。描述性名称可以很长,但奖励是可读性和不言自明的代码。

于 2012-10-07T03:37:52.930 回答