关于静态方法的 Java 编码约定

2022-09-03 17:39:02

这是一个非常简单的问题,但我认为这有点争议。

当我编写Java类代码时,我使用以下顺序。

class Foo {

    // static fields
    // instance fields
    // constructors
    // methods (non-static and static methods are mixed but sorted based on their functionalities)
}

我读到一篇文章说:
(来自 http://code.google.com/webtoolkit/makinggwtbetter.html#codestyle)

Java 类型应具有以下成员顺序:

嵌套类型(混合内部类和静态类是可以的)
静态字段
静态初始值设定项
静态方法
实例字段 实例初始
值设定项
构造
函数 实例方法

如果我遵循文章,上面的顺序应该是

class Foo {

    // static fields
    // static methods
    // instance fields
    // constructors
    // instance methods
}

在后者的情况下,我感到不舒服,在构造函数之前有一些方法。哪一个是使用更广泛的约定?


答案 1

我相信Sun(现在的Oracle)Java编码标准被更广泛地使用。这也是您当前正在使用的内容。

Java TM 编程语言的代码约定

3.1.3 类和接口声明

下表按类或接口声明的各个部分应出现的顺序描述了它们。

  1. 类/接口文档注释 ( /*.../)
  2. class或语句interface
  3. 类/接口实现注释 ( /.../),如有必要
  4. 类 () 变量static
  5. 实例变量
  6. 构造 函数
  7. 方法

答案 2

就个人而言,我使用选项2(实例元素和构造之前的静态字段和方法)。对我来说,这在扫描文件时是有意义的,因为从类的用户那里,我可以访问静态的东西,而不需要实例。因此,很高兴在构造函数之前看到它们,因为我在使用静态内容时不关心构造函数。