Java 是否将空格放在方法签名之前?

Java 是否将空格放在方法签名之前?,java,naming-conventions,Java,Naming Conventions,我想知道对于方法名称和参数之间的空白,总体建议是什么 即,以下两行之间的一般偏好: public static void main (String[] args) {} // (We'll ignore the question of spaces between the `String` and `[]` .) public static void main(String[] args) {} 我最近开始觉得前者更好,特别是考虑到方法声明中的所有其他内容(例如抛出异常)部分)也是空格分隔的

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

即,以下两行之间的一般偏好:

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

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

正如@chris在评论中提到的那样,特别声明:

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


正如您在问题中所质疑的那样,方法在目的上是不同的。

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


我不同意对这个问题的解释。它只是说不应该使用空格来帮助区分关键字和方法调用。因此,对于是否在方法调用无法出现的上下文中使用空格(因此不需要这样的帮助)没有正式的规则——因此,该规则显然适用于可调用上下文(调用可以出现的上下文和有帮助的上下文),而不适用于声明性上下文(呼叫无法出现且没有任何作用)。更重要的是,由于惯例规定,空格的使用应有助于区分使用上下文,因此在声明中使用空格实际上符合规则的精神。它实际上允许您区分方法调用和方法声明,即使在使用简单的文本搜索时也是如此(只需搜索方法名,后跟空格)

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

tl;dr您可以使用

void method () { } // declaration
void method2 () { // declaration
    method(); // invocation
}
能够仅快速搜索声明/调用,同时满足约定


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

我个人喜欢额外的空格,如果它能提高可读性。请原谅,如果此样式指南在任何方面都不是官方的(我没有Java常识方面的经验),但更多的空间更快乐伟大的神克图鲁的追随者要求所有使用方法名称后的空间的人向伟大的老神进行祭祀仪式…其他宗教可能有不同的规则…请咨询当地宗教领袖(或神秘的大部头称为“编码标准”)@EJP,我完全同意这样一个事实,即与其他东西相比,这并不是什么大不了的事情,但我认为,如果你的代码会被你的同事或其他人阅读,这是一种风格上的事情,我认为这是很重要的。