5

我想知道对于方法名称及其参数之间的空白的总体建议是什么。

也就是说,以下两行之间的一般偏好:

public static void main (String[] args) {} // (We'll ignore the question of spaces between the `String` and `[]` .)
public static void main(String[] args) {}

我最近开始觉得前者更好,特别是考虑到方法声明中的其他所有内容(例如该throws Exception(s)部分)也是空格分隔的。

4

2 回答 2

6

正如@chris 在评论中提到的那样,官方 Java 代码约定特别指出:

请注意,方法名称与其左括号之间不应使用空格。这有助于区分关键字和方法调用。

正如您在问题中可疑地考虑的那样,方法是故意不同的。

于 2013-04-16T00:53:40.087 回答
3

2018 年更新:由于几乎所有 IDE 都允许轻松调用/声明查找,因此在此处切换约定的主要好处是没有实际意义的;3 年后,我已经切换回“方法名称后没有空格”规则,只是因为大多数语言中的大多数样式指南都使用它......当收益超过“WTF 因素”时,对现有代码样式进行例外处理是 IMVHO 可行的变化;在这种情况下,使用最新的工具,没有实际的收益,所以我个人建议反对下面提出的替代方案。


我不同意对1999 年未维护的 White Space Java 约定的解释。它只是说不应该使用空格来帮助区分关键字和方法调用。因此,没有关于是否在方法调用不能出现的上下文中使用空间的官方规则(因此不需要这样的帮助)——因此,该规则显然适用于调用上下文(调用可以出现以及它有帮助的地方)并且不适用于声明性上下文(调用不能出现并且没有任何用途的地方)。甚至更多 - 因为约定指出空格的使用应该有助于区分使用上下文,在声明上使用空格实际上符合规则的精神 - 它实际上允许您区分方法调用和方法声明,即使使用简单的文本搜索(只需搜索方法名称后跟空格)。

切换到它之后,将调用与声明区分开来变得更容易了。它还强调了这样一个事实,即名称后面的括号不是调用性的——并且它们的语法与调用语法不同(即,在变量名之前需要类型声明等),正如您已经注意到的那样。

tl;博士你可以使用

void method () { } // declaration
void method2 () { // declaration
    method(); // invocation
}

能够仅对声明/调用进行快速搜索同时满足约定。

请注意,所有官方 Java 代码,以及大多数常见的代码样式,都不使用声明中的空格。

于 2015-07-05T15:31:01.753 回答