61

每次我在 Java 中使用比 更多的关键字编写方法时public void,每次我都以另一种方式编写它。有时“ static public void”有时“ public static void”等等。

这些关键字的最佳顺序(最佳做法)是什么?

[ abstract/static][ final][ ][ synchronized][ public/private/protected][ result_type]???

4

8 回答 8

74

理论上讲 public static final 或 final static public 都没有关系,但是如果你遵循通常的约定,其他人将能够更容易地阅读你的代码。这是首选顺序:

[公开| 受保护 | 私人的 ]

静止的

抽象的

同步的

[瞬态| 易挥发的 ]

最后

本国的

严格的fp

[诠释| 长 | 字符串 | 班级 | 枚举 | 接口等]

于 2012-04-24T13:40:55.587 回答
52

Checkstyle(它实现了 Java 语言规范部分的建议 8.1.1、8.3.18.4.3 说:

  1. 上市
  2. 受保护
  3. 私人的
  4. 抽象的
  5. 默认
  6. 静止的
  7. 最后
  8. 短暂的
  9. 易挥发的
  10. 同步的
  11. 本国的
  12. 严格的fp
于 2013-07-19T19:41:16.853 回答
8

Java语言规范中提到了修饰符的自定义使用顺序 (因此无需有自己的意见;-))例如对于方法修饰符,您会找到以下定义(摘录):

MethodModifiers:
    MethodModifier
    MethodModifiers MethodModifier

MethodModifier: one of
    Annotation public protected private abstract
    static final synchronized native strictfp

如果两个或多个(不同的)方法修饰符出现在方法声明中,尽管不是必需的,但习惯上它们的出现顺序与上面在 MethodModifier 的产生式中显示的顺序一致。

您会在其他几个指定使用修饰符的地方找到这句话,例如此处用于字段修饰符。

(这主要是从我这里的另一个答案中复制的)。

于 2013-05-24T10:10:10.953 回答
3

“最好的”是遵循Java Coding Style Guide,它在 6.2 (方法声明)中声明:

public static final synchronized long methodName()
    throws ArithmeticException, InterruptedException {
    static int count;
}
于 2012-04-24T13:43:52.410 回答
2

最好的顺序是其余代码使用的顺序。

于 2012-04-24T13:40:06.300 回答
1

像这样:

public static final synchronized void calculate()

于 2012-04-24T13:40:26.793 回答
0

是的,有一个标准的排序。

如果您使用 IDE,您可以将其设置为为您格式化代码,即在 Eclipse 中的 Preferences -> Java -> Editor -> Save Actions 中,您可以选中“Format source code”框

那你就不用再担心了。每当保存文件时,它将自动完成,如果您的整个项目都使用它,那么整个项目的代码都以相同的方式格式化。

于 2012-04-24T13:44:11.350 回答
-1

这是我个人的选择

public static final void method() { }
public void method() { }
public abstract void method() { }

这似乎也符合 java 文档

于 2012-04-24T13:43:37.633 回答